繁体   English   中英

如果单击后退按钮,如何着陆或导航到上一个活动

[英]How to land or navigate to previous activity if click on back button

在我的应用程序中,我实现了Notification 我的问题是,如果我单击收到的Notification ,它将单击“内置的后退”按钮,重定向到我在其中给出的Activity 。它将关闭应用程序并退出。 我需要的是,如果我单击“后退”按钮,它将进入上一个“ Activity ”中以进行设置。 例如:如果我们单击Facebook会收到Facebook通知,它将重定向到评论,就像页面,如果单击后退按钮,它将重定向到Facebook主窗体。

您需要重写onBackPressed方法:

@override
public void onBackPressed();
{
 super.onBackPressed()
 Intent i = new Intent(this, PreviousActivity.class);
 i.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
 startActivity(i);
}

如果您使用的是eclipse,请右键单击编辑器>>源>>覆盖/实现方法。

您可以使用将在清单中设置的父活动,如下所示:

<activity
    android:name=".YourActivity"
    android:parentActivityName=".YourParentActivity">

    <!-- Parent activity meta-data to support 4.0 and lower -->
    <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value=".YourParentActivity"/>
</activity>

之后,在代码中重写onBackPressed()方法并执行以下操作:

NavUtils.navigateUpFromSameTask(this);

仅当您的应用是当前任务的所有者时,才应使用此导航方法,否则应使用此方法:

Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
    // This activity is NOT part of this app's task, so create a new task
    // when navigating up, with a synthesized back stack.
    TaskStackBuilder.create(this)
            // Add all of this activity's parents to the back stack
            .addNextIntentWithParentStack(upIntent)
            // Navigate up to the closest parent
            .startActivities();
} else {
    // This activity is part of this app's task, so simply
    // navigate up to the logical parent activity.
    NavUtils.navigateUpTo(this, upIntent);
}

我只需要使用PendingIntent.getActivities()而不是getActivity()。 另外值得一提的是TaskStackBuilder

这是一些代码:

Intent backIntent = new Intent(ctx, MainActivity.class);
backIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Intent intent = new Intent(ctx, ConversationActivity.class);
intent.putExtra("whatever", whatever);
final PendingIntent pendingIntent = PendingIntent.getActivities(ctx, UNIQUE_REQUEST_CODE++,
        new Intent[] {backIntent, intent}, PendingIntent.FLAG_ONE_SHOT);

刚刚测试过。 它像一种魅力。 最初,我怀疑如果该应用程序已在运行,则可能会出现问题,您会收到通知。 也就是说,您的活动堆栈位于(最右上方):

[MainActivity] [SomeActivity]

然后单击有关ConversationActivity的通知。 你会得到:

[MainActivity] [SomeActivity] [MainActivity] [ConversationActivity]

好吧,原来你神奇地得到了

[MainActivity] [SomeActivity] [ConversationActivity]

这就是我想要的,但是我不知道它是如何做到的。 我没有在任何活动上设置任何特殊选项。 那好吧!

调用函数onBackPressed()

public void onClick() {
    onBackPressed();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM