导航回父活动
我想搬回从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" />
尝试这种使用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;
}
仍然无法通过通知打开活动时转移到父活动。 –
您是否在清单文件中添加了父级活动 –
是的,我已经添加了 –
这可能是您的解决方案,你可以简单地处理回事件,而不是寻找父活动。
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
super.onBackPressed();
// or
//finish();
break;
} return true;
}
仍然无法通过通知打开活动时移回 –
发送一些额外的,你来自通知,并检查是否来自通知,然后完成这一点,并打开父母的活动。 –
<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;
}
恢复,如果您有任何困难。
当试图通过通知打开活动时,我仍然无法退回 –
您是否添加了元数据标记信息? –
是的,我已经添加了元数据 –
在活动定义在清单中添加元数据标签是这样的:
<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。
希望它有帮助。
试试这个'resultIntent4.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)',然后干净安装应用 –