通知后返回导航

时间:2014-11-25 03:40:59

标签: android

我有一个包含通知的应用。我想在选择通知后设置“后退”导航行为。我有两个活动: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有些不对劲。这是第二次或第三次发生这种事情。

3 个答案:

答案 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();