导航回父活动

问题描述:

我想搬回从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)',然后干净安装应用 –

尝试这种使用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

是的,我已经添加了 –

这可能是您的解决方案,你可以简单地处理回事件,而不是寻找父活动。

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

仍然无法通过通知打开活动时移回 –

+0

发送一些额外的,你来自通知,并检查是否来自通知,然后完成这一点,并打开父母的活动。 –

<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

是的,我已经添加了元数据 –

在活动定义在清单中添加元数据标签是这样的:

<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。

希望它有帮助。