我遇到了一些活动的流量问题。所需的行为如下:
用户有时会收到通知。单击此通知后,将打开一个新的Activity
,其中包含一些信息。在此活动中,有一个按钮,其目的是将用户重定向到另一个Activity
,其中显示更详细的信息。当用户在详细信息活动中并按下后退按钮(或ActionBar
中的后退按钮)时,将关闭此按钮并显示主要活动(此活动与我在首先提到的那个不同)
除了最后一部分,一切正常。当用户按下后退按钮时,应用程序将关闭,并显示主屏幕。为什么会这样?
这是我的AndroidManifest.xml
:
<activity
android:name=".MainActivity">
</activity>
<activity
android:name=".DetailActivity"
android:label="@string/title_detail_activity"
android:parentActivityName="solar.panik.MainActivity" >
<!-- Parent activity meta-data to support 4.0 and lower -->
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="solar.panik.MainActivity" />
</activity>
<activity
android:name=".NotificationActivity"
android:theme="@style/NotificationActivity"
android:excludeFromRecents="true">
</activity>
以下是从DetailActivity
开始NotificationActivity
的按钮的onClick代码:
Intent intent = new Intent(NotificationActivity.this, DetailActivity.class);
startActivity(intent);
finish();
提前致谢
答案 0 :(得分:1)
当你从启动器以外的其他地方启动你的应用时,你需要通过后台堆栈。
在启动活动时向下滚动到创建后退堆栈()。
所以在你的情况下:
// Intent for the activity to open when user selects the notification
Intent detailsIntent = new Intent(this, DetailActivity.class);
// Use TaskStackBuilder to build the back stack and get the PendingIntent
PendingIntent pendingIntent =
TaskStackBuilder.create(this)
// add all of DetailActivity's parents to the stack,
// followed by DetailsActivity itself
.addNextIntentWithParentStack(detailsIntent)
.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setContentIntent(pendingIntent);
查看此answer。
OLD ANSWER BELWAN
在您的详细信息活动中确保不会覆盖(或定义)onBackPressed()方法。
如果不是这样,请尝试将其添加到清单中,并删除当前的“.MainActivity”活动和代码。 (或者用它代替)
<activity
android:name="solar.panik.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>
您必须将其声明为MAIN,因此Up按钮知道要去哪里。 “返回”将带您进入层次结构上的下一个活动。
希望有所帮助。
答案 1 :(得分:0)
在您的详细活动中执行此操作。单击后退按钮的那个。
@Override
public void onBackPressed() {
Intent intent = new Intent(DetailActivity.this, MainActivity.class);
startActivity(intent);
finish();
}