如果单击后退按钮,如何登陆或导航到上一个 activity
How to land or navigate to previous activity if click on back button
在我的应用程序中,我实现了 Notification
。我的问题是,如果我单击收到的 Notification
,它将重定向到我在此处提供的 Activity
,如果我单击内置的“后退”按钮,它将关闭应用程序并退出。
我需要的是,如果我单击“后退”按钮,它应该会转到之前的 Activity
如何设置。
例如:如果我们收到 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,则右键单击编辑器>>源代码>>override/implement 方法。
我只需要使用 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);
刚刚测试过。它就像一个魅力。我最初怀疑如果应用程序已经 运行 并且你去通知,可能会有问题。 IE。假设你 activity 堆栈是(最右边):
[MainActivity] [SomeActivity]
然后您单击 ConversationActivity 的通知。你会得到:?
[MainActivity] [SomeActivity] [MainActivity] [ConversationActivity]
好吧,原来你神奇地得到了
[MainActivity] [SomeActivity] [ConversationActivity]
这就是我想要的,但我不知道它是如何做到的。我没有为任何活动设置任何特殊选项。好吧!
调用函数 onBackPressed()
public void onClick() {
onBackPressed();
}
您可以使用将在您的清单中设置的父 activity,如下所示:
<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);
}
在我的应用程序中,我实现了 Notification
。我的问题是,如果我单击收到的 Notification
,它将重定向到我在此处提供的 Activity
,如果我单击内置的“后退”按钮,它将关闭应用程序并退出。
我需要的是,如果我单击“后退”按钮,它应该会转到之前的 Activity
如何设置。
例如:如果我们收到 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,则右键单击编辑器>>源代码>>override/implement 方法。
我只需要使用 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);
刚刚测试过。它就像一个魅力。我最初怀疑如果应用程序已经 运行 并且你去通知,可能会有问题。 IE。假设你 activity 堆栈是(最右边):
[MainActivity] [SomeActivity]
然后您单击 ConversationActivity 的通知。你会得到:?
[MainActivity] [SomeActivity] [MainActivity] [ConversationActivity]
好吧,原来你神奇地得到了
[MainActivity] [SomeActivity] [ConversationActivity]
这就是我想要的,但我不知道它是如何做到的。我没有为任何活动设置任何特殊选项。好吧!
调用函数 onBackPressed()
public void onClick() {
onBackPressed();
}
您可以使用将在您的清单中设置的父 activity,如下所示:
<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);
}