Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在不重写OnBackPressed()的情况下从从通知启动的活动导航到另一个活动?_Android_Android Activity_Notifications_Android Manifest - Fatal编程技术网

Android 如何在不重写OnBackPressed()的情况下从从通知启动的活动导航到另一个活动?

Android 如何在不重写OnBackPressed()的情况下从从通知启动的活动导航到另一个活动?,android,android-activity,notifications,android-manifest,Android,Android Activity,Notifications,Android Manifest,我有3个活动假设MainActivity、FirstActivity、NotificationActivity,当用户单击我的应用程序活动C中的通知时,我希望用户能够在按下后退按钮时返回B,我希望在不覆盖OnBackPressed()的情况下实现这一点方法在进行一些研发时,我发现了一种使用清单指定父活动返回到另一个活动的方法,它从B->a和C->a工作,但我不知道如何让C->B工作。我将发布我正在处理的清单文件。如果需要,我会发布类文件 <?xml version="1.0" encodi

我有3个活动假设MainActivity、FirstActivity、NotificationActivity,当用户单击我的应用程序活动C中的通知时,我希望用户能够在按下后退按钮时返回B,我希望在不覆盖OnBackPressed()的情况下实现这一点方法在进行一些研发时,我发现了一种使用清单指定父活动返回到另一个活动的方法,它从B->a和C->a工作,但我不知道如何让C->B工作。我将发布我正在处理的清单文件。如果需要,我会发布类文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.notificationmultipledemo"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="21" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".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=".FirstActivity"
        android:label="@string/title_activity_first"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>
    <activity android:name=".NotificationActivity" 
        android:label="@string/title_activity_notification" 
        android:parentActivityName=".FirstActivity">
        <meta-data android:name="android.support.PARENT_ACTIVITY" 
            android:value=".FirstActivity" />
    </activity>


</application>

在displayNotificationOne()中替换

如果您希望用户在按下“后退”按钮时从NotificationActivity导航到FirstActivity,您还可以根据清单从FirstActivity转到此处的MainActivity。如果不希望发生这种情况,请删除FirstActivity活动部分中的元数据和parentActivityName

public class MainActivity extends Activity
{
   private NotificationManager myNotificationManager;
   private int notificationIdOne = 111;
   private int notificationIdTwo = 112;
   private int numMessagesOne = 0;
   private int numMessagesTwo = 0;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button notOneBtn = (Button) findViewById(R.id.notificationOne);
      notOneBtn.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View view) {
            displayNotificationOne();
         }
      });

      Button notTwoBtn = (Button) findViewById(R.id.notificationTwo);
      notTwoBtn.setOnClickListener(new View.OnClickListener() {
         @Override
        public void onClick(View view) {
            displayNotificationTwo();
         }
      });

   }

   protected void displayNotificationOne() {

      // Invoking the default notification service
      NotificationCompat.Builder  mBuilder = new NotificationCompat.Builder(this);  

      mBuilder.setContentTitle("New Message with explicit intent");
      mBuilder.setContentText("New message from Cheers received");
      mBuilder.setTicker("Explicit: New Message Received!");
      mBuilder.setSmallIcon(R.drawable.ic_launcher);

      // Increase notification number every time a new notification arrives 
      mBuilder.setNumber(++numMessagesOne);

      // Creates an explicit intent for an Activity in your app 
      Intent resultIntent = new Intent(this, NotificationActivity.class);
      //resultIntent.putExtra("notificationId", notificationIdOne);
   // when the user presses the notification, it is auto-removed
      mBuilder.setAutoCancel(true);
      //This ensures that navigating backward from the Activity leads out of the app to Home page
      TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
      // Adds the back stack for the Intent
      stackBuilder.addParentStack(FirstActivity.class);

      // Adds the Intent that starts the Activity to the top of the stack
      stackBuilder.addNextIntent(resultIntent);
      PendingIntent resultPendingIntent =
         stackBuilder.getPendingIntent(
            0,
            PendingIntent.FLAG_UPDATE_CURRENT 
         );
      // start the activity when the user clicks the notification text
      mBuilder.setContentIntent(resultPendingIntent);

      myNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
      Date now = new Date();
        long uniqueId = now.getTime();//use date to generate an unique id to differentiate the notifications.
      // pass the Notification object to the system
        Calendar c = Calendar.getInstance();
        SimpleDateFormat simpledateformat_notification = new SimpleDateFormat("HH:mm:ss");
        String Notificationdate = simpledateformat_notification.format(c.getTime());
        String[] Notification_time = Notificationdate.split(":");
        //int Beacon_hour = Integer.parseInt(Notification_time[0]); //7
        int Notification_minutes =Integer.parseInt(Notification_time[2]);

      myNotificationManager.notify(Notification_minutes, mBuilder.build());
   }  
}
stackBuilder.addParentStack(FirstActivity.class);
stackBuilder.addParentStack(NotificationActivity.class);