我有一个包含通知的应用。我想在选择通知后设置“后退”导航行为。我有两个活动:MainActivity和GoogleFormActivity。通知启动GoogleFormActivity,我希望后退按钮返回MainActivity。我试过this无济于事。这是我的代码:
的Manifest.xml:
<activity
android:name="com.ican.activities.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="com.ican.activities.GoogleFormActivity"
android:label="@string/title_activity_google_form"
android:parentActivityName="com.ican.activities.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.ican.activities.MainActivity" />
</activity>
以下是选择通知时的代码:
Intent resultIntent = new Intent(this, GoogleFormActivity.class);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this).
addParentStack(GoogleFormActivity.class).
addNextIntent(resultIntent);
PendingIntent resultPendingIntent =
stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
// mId allows you to update the notification later on.
int mId = 1;
mNotificationManager.notify(mId, mBuilder.build());
据我所知,这看起来与Android文档完全一样。但是当我在GoogleFormActivity启动后按回来时,应用程序会从应用程序导航到主屏幕。我不明白发生了什么。有什么想法吗?
编辑我必须为人们道歉。昨天没有用的相同代码现在可用。我发誓Android Studio有些不对劲。这是第二次或第三次发生这种事情。
答案 0 :(得分:0)
当您点按back button
时,它会关闭当前活动。这意味着它不会开展任何活动。只关闭当前活动..活动按stack (the back stack)
排列,按照每个活动的开放顺序排列。如果用户按下Back button
,则当前活动将从堆栈中弹出并销毁。如果堆栈包含该活动,则恢复堆栈中的先前活动。当活动被销毁时,系统不会保留活动的状态。因此,当您来自通知时,您将只打开一项活动。它不会回到主要活动,因为它没有打开。您必须使用Intent
导航到特定活动。 docs
答案 1 :(得分:0)
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
super.onBackPressed();
Intent intent=new Intent(this,MainActivity.class);
startActivity(intent);
finish();
}
在GoogleFormActivity中添加
答案 2 :(得分:0)
尝试这样做,
getFragmentManager().popBackStack();
fm.beginTransaction().add(R.id.main, newFragment).addToBackStack("fragBack").commit();