1

我的問題是我有兩個活動,活動A和活動B. A是主要活動,A是活動B的父活動。活動B可通過觸摸通知或通過活性A.Android從通知活動導航到父活動

活動像這樣的啓動活性B:

  Intent intent = new Intent(getActivity(), B.class); 
      startActivityForResult(intent, RESULT_ACTIVITY_1); 

通知開始活動乙這樣的:

Intent openIntent = new Intent(context, B.class); 
    openIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    PendingIntent pendingIntentOpen = PendingIntent.getActivity(context, 0 , openIntent, PendingIntent.FLAG_ONE_SHOT); 

    contentView.setOnClickPendingIntent(R.id.textView5NotifyOpen,pendingIntentOpen); 

清單對於活動B:

<activity 
     android:name=".B" 
     android:parentActivityName=".MainActivity" 
     android:theme="@style/Theme.AppCompat.Light.NoActionBar"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="com.eee.ccc.MainActivity" /> 
    </activity> 

當活動B關閉發送回A的一些數據:

 Intent returnIntent = new Intent(); 
     returnIntent.putExtra("Data",some data); 

     setResult(Activity.RESULT_OK,returnIntent); 
     finish(); 

到目前爲止一切正常,我能夠從A,從通知發佈活動B,而當我從通知中啓動它時,B終止活動A不被調用。 現在我想要做的是,當我點擊一個通知時,它開始活動B,當B關閉/完成他的父活動A時啓動setResult(Activity.RESULT_OK,returnIntent);onActivityResult(int requestCode,int resultCode,Intent data) on activity A called。 感謝!

回答

0

嘗試TaskStackBuilder

// Intent for the activity to open when user selects the notification 
    Intent detailsIntent = new Intent(this, DetailsActivity.class); 

    // Use TaskStackBuilder to build the back stack and get the PendingIntent 
    PendingIntent pendingIntent = 
      TaskStackBuilder.create(this) 
          // add all of DetailsActivity's parents to the stack, 
          // followed by DetailsActivity itself 
          .addNextIntentWithParentStack(upIntent) 
          .getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(this); 
    builder.setContentIntent(pendingIntent); 
    ... 

Read this android documentation for more details