2017-09-04 84 views
0

我想搬回從toolbar.here向上導航按鈕父活動是我的代碼:導航回父活動

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
       Intent upIntent = NavUtils.getParentActivityIntent(this); 
       if (upIntent != null) 
        if (NavUtils.shouldUpRecreateTask(this, upIntent)) { 
         // This activity is NOT part of this app's task, so create a new task 
         // when navigating up, with a synthesized back stack. 
         TaskStackBuilder.create(this) 
           // Add all of this activity's parents to the back stack 
           .addNextIntentWithParentStack(upIntent) 
           // Navigate up to the closest parent 
           .startActivities(); 
        } else { 
         // This activity is part of this app's task, so simply 
         // navigate up to the logical parent activity. 
         NavUtils.navigateUpTo(this, upIntent); 
        } 

       break; 
} return true 
} 

現在的問題是upIntent總是null.I要導航當從通知中打開活動時,返回到家長活動。 UPDATE: 這裏是我如何生產通知:

NotificationCompat.Builder mBuilder4 = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.mipmap.ic_launcher) 
         .setContentTitle("Someone") 
         .setPriority(Notification.PRIORITY_MAX) 
         .setAutoCancel(true) 
         .setContentText(map.get("text")); 
     Intent resultIntent4 = new Intent(this, Myactivity.class); 
     resultIntent4.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     TaskStackBuilder stackBuilder4 = TaskStackBuilder.create(this); 
     stackBuilder4.addParentStack(Myactivity.class); 
     stackBuilder4.addNextIntent(resultIntent4); 
     PendingIntent resultPendingIntent4 = 
       stackBuilder4.getPendingIntent(
         0, 
         PendingIntent.FLAG_UPDATE_CURRENT 
       ); 
     mBuilder4.setContentIntent(resultPendingIntent4); 
     SharedPref pref = new SharedPref(); 
     int soundstatus = pref.getSoundStatus(getApplicationContext()); 
     if (soundstatus == 1) 
      mBuilder4.setDefaults(Notification.DEFAULT_SOUND); 
     NotificationManager mNotificationManager4 = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager4.notify(102, mBuilder4.build()); 

和我的清單文件:

<activity 
     android:name="com.myblinddate.Myactivity" 
     android:parentActivityName=".Parentactivity" /> 
+0

試試這個'resultIntent4.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)',然後乾淨安裝應用 –

回答

0

嘗試這種使用android:parentActivityName添加清單檔案中的父活動如下面的代碼

<activity android:name=".LoginActivity" 
    android:parentActivityName=".SignupActivity"> 
</activity> 

並將其添加到您的活動文件

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

或使用您的方法,這樣

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
       super.onBackPressed(); 
       break; 
} return true; 
} 
+0

仍然無法通過通知打開活動時轉移到父活動。 –

+0

您是否在清單文件中添加了父級活動 –

+0

是的,我已經添加了 –

0

這可能是您的解決方案,你可以簡單地處理回事件,而不是尋找父活動。

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case android.R.id.home: 
       super.onBackPressed(); 
       // or 
       //finish(); 
       break; 
} return true; 
} 
+0

仍然無法通過通知打開活動時移回 –

+0

發送一些額外的,你來自通知,並檢查是否來自通知,然後完成這一點,並打開父母的活動。 –

2
<activity 
    android:name="activityName" 
    android:parentActivityName=".activity.ServiceDetailsActivity" 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value="parent activity name with package" /> 
</activity> 

//在java中的onCreate方法的代碼使用

getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

//包括下面的代碼

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      case android.R.id.home: 
       finish(); 
       break; 
     } 
     return true; 
    } 

恢復,如果您有任何困難。

+0

當試圖通過通知打開活動時,我仍然無法退回 –

+0

您是否添加了元數據標記信息? –

+0

是的,我已經添加了元數據 –

0

在活動定義在清單中添加元數據標籤是這樣的:

<activity 
     android:name=".Myactivity" 
     android:label="@string/app_name"> 
     <meta-data 
      android:name="android.support.PARENT_ACTIVITY" 
      android:value=".Parentactivity"/> 
    </activity> 

然後調用Intent upIntent = NavUtils.getParentActivityIntent(this);不會返回null。

希望它有幫助。