最近在看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);
}
};}
我不明白这两种调用方式,有什么区别?
还是说我没理解明白?

解决方案 »

  1.   

    还有一个XML,是这样写的。
    <?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>
      

  2.   

    这两种方式其实是一样的啊,都是startActivity。
    区别在于,第一种是在当前Activity主动触发,第二种是收到某个广播以后启动Activity。