最近在看Android的书籍,里面弹出页面有两种方式(目前只看到2种)。一种是直接调用类,通过类来显示页面。
startActivityForResult(new Intent(this, TY.class),requestCode);另一种是通过广播?具体代码如下,需要三个类。
MainActivity 类:
public class MainActivity extends Activity {
private Button btn;
private static final String MY_ACTION="com.example.notification2.MY_ACTION";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MY_ACTION);
sendBroadcast(intent);
}
};
}MyReceiver 类:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context,DisplayActivity.class);
context.startActivity(i);
}
}
DisplayActivity 类:
public class DisplayActivity extends Activity{
private Button cancelBtn;
private Notification n;
private NotificationManager nm;
private static final int ID=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
cancelBtn=(Button)findViewById(R.id.button2);
String service = NOTIFICATION_SERVICE;
nm=(NotificationManager)getSystemService(service); n=new Notification();
int icon=n.icon =android.R.drawable.ic_dialog_alert ;
String tickerText="发出通知 Test Notification";
long when = System.currentTimeMillis();
n.icon=icon;
n.tickerText =tickerText;
n.when =when;
Intent intent = new Intent(this,MainActivity.class );
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
n.setLatestEventInfo(this, "My Title", "My Content", pi);
nm.notify(ID,n);
cancelBtn.setOnClickListener(cancelListener);
} private OnClickListener cancelListener = new OnClickListener(){
@Override
public void onClick(View v) {
nm.cancel(ID);
}
};}
我不明白这两种调用方式,有什么区别?
还是说我没理解明白?
startActivityForResult(new Intent(this, TY.class),requestCode);另一种是通过广播?具体代码如下,需要三个类。
MainActivity 类:
public class MainActivity extends Activity {
private Button btn;
private static final String MY_ACTION="com.example.notification2.MY_ACTION";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn=(Button)findViewById(R.id.button1);
btn.setOnClickListener(listener);
}
private OnClickListener listener = new OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(MY_ACTION);
sendBroadcast(intent);
}
};
}MyReceiver 类:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent i = new Intent();
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setClass(context,DisplayActivity.class);
context.startActivity(i);
}
}
DisplayActivity 类:
public class DisplayActivity extends Activity{
private Button cancelBtn;
private Notification n;
private NotificationManager nm;
private static final int ID=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
cancelBtn=(Button)findViewById(R.id.button2);
String service = NOTIFICATION_SERVICE;
nm=(NotificationManager)getSystemService(service); n=new Notification();
int icon=n.icon =android.R.drawable.ic_dialog_alert ;
String tickerText="发出通知 Test Notification";
long when = System.currentTimeMillis();
n.icon=icon;
n.tickerText =tickerText;
n.when =when;
Intent intent = new Intent(this,MainActivity.class );
PendingIntent pi = PendingIntent.getActivity(this,0,intent,0);
n.setLatestEventInfo(this, "My Title", "My Content", pi);
nm.notify(ID,n);
cancelBtn.setOnClickListener(cancelListener);
} private OnClickListener cancelListener = new OnClickListener(){
@Override
public void onClick(View v) {
nm.cancel(ID);
}
};}
我不明白这两种调用方式,有什么区别?
还是说我没理解明白?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.notification2"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.notification2.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.notification2.DisplayActivity"></activity>
<receiver android:name="MyReceiver">
<intent-filter>
<action android:name="com.example.notification2.MY_ACTION" />
</intent-filter>
</receiver>
</application></manifest>
区别在于,第一种是在当前Activity主动触发,第二种是收到某个广播以后启动Activity。