【问题标题】:Go back to home screen after Activity finishesActivity 完成后返回主屏幕
【发布时间】:2013-03-08 06:27:19
【问题描述】:

我有一个 Activity,它会一直发出哔哔声,直到用户单击按钮。 单击按钮时,它会显示一条消息。显示消息后,我希望我的活动自行退出到主屏幕,而不是用户按下后退按钮退出。

finish() 方法会这样做吗?如果是,我应该如何以及在哪里实施?

我们将不胜感激任何形式的帮助。谢谢

【问题讨论】:

    标签: android android-activity homescreen


    【解决方案1】:
        Intent i= new Intent("package.homescreenactivity");//homescreen of your app.
        i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY);
        startActivity(i);
        finish(); 
    

    通过清除活动堆栈返回主屏幕。

    要了解整个概念,我建议您查看此站点。 http://developer.android.com/guide/components/tasks-and-back-stack.html。 该网站讨论了活动回栈的工作原理。

    更新:(2014 年 8 月 15 日)

    清除 Backstack 可能不是一个好主意。请查看有效导航设计指南。

    后退按钮应该带您回到上一个活动。

    检查

    http://developer.android.com/design/patterns/navigation.html

    【讨论】:

    • 对不起,如果我不清楚。我的意思是安卓手机的默认主屏幕。这会回到过去吗?
    • 酷。最后的链接详细解释了。阅读它。
    【解决方案2】:

    在所有活动中应用 finish() 方法。 Activity 完成后,它将返回主屏幕。

    【讨论】:

      【解决方案3】:

      案例一:按钮点击

      public void onClick(View v) {
          // Show message here
          moveTaskToBack(true);
          }
      

      案例2:如果你想让用户回家

      public boolean onKeyDown(int keyCode, KeyEvent event) {
              if (keyCode == KeyEvent.KEYCODE_BACK) {
      
                  AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
                  alertbox.setTitle(res.getString("Title"));
                  alertbox.setMessage(res.getString("Exit"));
                  alertbox.setIcon(R.drawable.logo);
                  alertbox.setPositiveButton(res.getString(R.string.Yes),
                          new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface arg0, int arg1) {
                                  exit();
                              }
                          });
      
                  alertbox.setNeutralButton(res.getString(R.string.No),
                          new DialogInterface.OnClickListener() {
                              public void onClick(DialogInterface arg0, int arg1) {
                              }
                          });
      
                  alertbox.show();
                  return true;
              }
      
              return super.onKeyDown(keyCode, event);
          }
      
          private void exit() {
              moveTaskToBack(true);
      
          }
      

      【讨论】:

        【解决方案4】:

        假设您将消息显示为alertdialog,请在按下alertdialog 的按钮时调用finish()

        如果您使用的是Toast(),则在显示Toast() 后按下按钮时调用finish()

        【讨论】:

          【解决方案5】:

          您可以在按钮onClick() 处应用finish() 方法,在startActivity() 调用之后您可以应用finish 方法,如下所示。

          startActivity(intent obj);
          finish(); 
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-05-24
            • 2017-12-16
            • 1970-01-01
            • 2011-10-24
            • 1970-01-01
            • 1970-01-01
            • 2014-09-19
            • 2020-09-22
            相关资源
            最近更新 更多