【问题标题】:Keep Showing Previous Intent when click back button单击后退按钮时继续显示先前的意图
【发布时间】:2013-04-26 11:38:33
【问题描述】:

单击后退按钮时出现问题。它继续进行上一个活动。用户可以登录以使用该应用程序。但问题是当用户注销并单击返回按钮时,它将显示“登录”面板页面。如果用户想退出应用程序,他们将不得不通过多次后点击。这不是我想要的样子。

当然,我可以使用菜单并为用户提供退出应用程序的选项,但我不想使用这种方法,因为它不是常用的方法。这不是很好,因为通常用户会单击返回第一页并提示他们是否要退出。

如何解决意图问题?

【问题讨论】:

    标签: android android-intent user-interface android-activity


    【解决方案1】:

    如果您不想通过后台堆栈访问活动,您可以像这样在 AndroidManifest.xml 中修改其条目:

    <activity
        android:name="com.myDomain.myApp.MyActivity"
        android:label="My Activity"
        android:noHistory="true" >
    </activity>
    

    如果您只是想确保前一个活动不显示在后台堆栈中,您可以在每个调用 finish() 的活动中添加一个处理程序,然后从当前活动中调用它。

    以前的活动:

    public void goAway()
    {
        finish();
    }
    

    当前活动:

    previousActivity.goAway();
    

    当然,您需要在当前活动中引用上一个活动。

    【讨论】:

    • 如何创建参考?如果我之前的活动有一个名为 HelloWorld.java 的 java 文件,我会调用 HelloWorld.goAway(); 吗?
    【解决方案2】:

    如果您想保留后台堆栈并仅在用户注销或从已注销屏幕按下返回按钮时将其清除,可以执行以下操作。

    1:通过使用相同的REQUEST_CODE 调用startActivityForResult(intent, REQUEST_CODE) 来启动每个活动

    2:覆盖每个Activity中的onActivityResult()并添加以下代码,

    if(resultCode == RESULT_OK && requestCode == REQUEST_CODE) {
        setResult(OK);
        finish();
    }
    

    3:当用户退出或从退出的屏幕按下返回键时,执行以下操作

    setResult(OK);
    finish();
    

    这将确保用户注销后清除后台堆栈中的所有活动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多