有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在单击后退按钮时着陆或导航到上一个活动

在我的应用程序中,我实现了Notification。我的问题是,如果我点击received Notification,它将重定向到我在那里给出的Activity。如果我点击内置的后退按钮,它将关闭应用程序并退出。 我需要的是,如果我点击后退按钮,它应该返回到前面的Activity如何设置它。 例句:如果我们点击Facebook的通知,它将重定向到评论页面,如果我们点击后退按钮,它将重定向到Facebook主窗体


共 (4) 个答案

  1. # 1 楼答案

    调用函数onBackPressed()

    public void onClick() {
        onBackPressed();
    }
    
  2. # 2 楼答案

    您需要重写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,那么右键单击编辑器>>;来源>>;重写/实现方法

  3. # 3 楼答案

    我只需要使用Pending帐篷。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]
    

    然后单击对话活动通知。你会得到:

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

    事实证明你神奇地

    [MainActivity] [SomeActivity] [ConversationActivity]
    

    这正是我想要的,但我不知道它是如何做到的。我没有为任何活动设置任何特殊选项。哦,好吧

  4. # 4 楼答案

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

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