Android TaskStackBuilder是';他没有按预期工作

Android TaskStackBuilder是';他没有按预期工作,android,Android,我想做的是在Android中创建一个通知,每当点击一个活动时就会打开它。此活动称为“NotificationsActivity”,其父级为“MainActivity”。每当向用户显示NotificationsActivity时,我希望他们能够按下后退按钮进入主活动。我一直在使用这里的说明()来尝试让它工作。然而,无论我尝试什么,只要我从NotificationsActivity按下back键,应用程序就会完全退出。我能想到的唯一问题是,我的应用程序有一个登录屏幕,我还将其标识为主和启动器。我不认

我想做的是在Android中创建一个通知,每当点击一个活动时就会打开它。此活动称为“NotificationsActivity”,其父级为“MainActivity”。每当向用户显示NotificationsActivity时,我希望他们能够按下后退按钮进入主活动。我一直在使用这里的说明()来尝试让它工作。然而,无论我尝试什么,只要我从NotificationsActivity按下back键,应用程序就会完全退出。我能想到的唯一问题是,我的应用程序有一个登录屏幕,我还将其标识为主和启动器。我不认为这会造成问题,但这就是我所能想到的

总而言之。我想要的是:

  • 点击通知
  • 公开通知活动
  • 压制
  • 开放式主活动
  • 但我得到的是:

  • 点击通知
  • 公开通知活动
  • 压制
  • 退出应用程序
  • 相关代码如下所示

    从AndroidManifest.xml:

    <activity
        android:name=".LoginActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:noHistory="true" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
        </intent-filter>
    </activity>
    <activity
        android:name=".NotificationsActivity"
        android:parentActivityName=".MainActivity" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".MainActivity" />
    </activity>
    
    编辑:我从项目中删除了LoginActivity类,它没有任何区别。所以,现在我不知道我做错了什么

    第二次编辑: 为了补充Skizo的答案,我必须支持操作栏上的后退按钮。下面是处理该问题的代码。我从Skizo提供的方法覆盖和下面的代码中调用“goBack”

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.getItemId()){
            case android.R.id.home:
                goBack();
                break;
        }
        return super.onOptionsItemSelected(item);
    }
    private void goBack(){
        Intent intent = new Intent(getApplicationContext(), MainActivity.class);
        startActivity(intent);
        finish();
    }
    

    只需覆盖
    通知活动
    上的
    onBackPressed()

    复制并粘贴此方法:

    @Override
    public void onBackPressed() {
     // super.onBackPressed();  
     Intent intent = new Intent(getApplicationContext(), MainActivity.class);
     startActivity(intent);
     finish();
    }
    

    只需覆盖
    通知活动
    上的
    onBackPressed()

    复制并粘贴此方法:

    @Override
    public void onBackPressed() {
     // super.onBackPressed();  
     Intent intent = new Intent(getApplicationContext(), MainActivity.class);
     startActivity(intent);
     finish();
    }
    

    LogCat上有错误吗?没有错误。通常,如果应用程序崩溃,我甚至在最近的列表中都看不到它了。然而,在这种情况下,它最近仍然出现。LogCat上有错误吗?没有错误。通常,如果应用程序崩溃,我甚至在最近的列表中都看不到它了。然而,在这种情况下,它仍然出现在最近。谢谢!这让我走了一半。它只适用于“硬件后退”按钮。操作栏上的“后退”按钮仍处于退出状态。我通过添加这个代码解决了这个问题。去他妈的。我无法在这里正确显示代码。我将编辑这篇文章并把它放在那里。我要在我的答案中添加一些东西吗?如果你解决了问题,或者我帮你解决了问题,请随意投票或将其标记为正确的^^^^对不起,我在等着看其他人是否也会有答案。虽然你的答案确实有效,但它并没有真正回答最初的问题。也就是说,当我实际上从Android开发者网站复制/粘贴代码时,为什么我的原始代码不起作用?请不要以为我不欣赏你的回答。我真的喜欢。这让我度过了工作日中相当烦人的一段时间。再次感谢!谢谢这让我走了一半。它只适用于“硬件后退”按钮。操作栏上的“后退”按钮仍处于退出状态。我通过添加这个代码解决了这个问题。去他妈的。我无法在这里正确显示代码。我将编辑这篇文章并把它放在那里。我要在我的答案中添加一些东西吗?如果你解决了问题,或者我帮你解决了问题,请随意投票或将其标记为正确的^^^^对不起,我在等着看其他人是否也会有答案。虽然你的答案确实有效,但它并没有真正回答最初的问题。也就是说,当我实际上从Android开发者网站复制/粘贴代码时,为什么我的原始代码不起作用?请不要以为我不欣赏你的回答。我真的喜欢。这让我度过了工作日中相当烦人的一段时间。再次感谢!