在我的应用中向后打开MainActivity的Activity

时间:2014-05-12 22:18:58

标签: android android-activity

我遇到了一些活动的流量问题。所需的行为如下:

用户有时会收到通知。单击此通知后,将打开一个新的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();

提前致谢

2 个答案:

答案 0 :(得分:1)

当你从启动器以外的其他地方启动你的应用时,你需要通过后台堆栈

Android tutorial

在启动活动时向下滚动到创建后退堆栈()。

所以在你的情况下:

// 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(); 
}