首页 文章

Android:返回上一个活动

提问于
浏览
448

我想在Android应用程序上做一些简单的事情 . 怎么可能回到以前的活动 .

我需要什么代码才能回到之前的活动

23 回答

  • 0
    @Override
    public void onBackPressed() {
        super.onBackPressed();
    }
    

    如果你想要按钮点击返回然后简单地把

    bbsubmit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onBackPressed();
        }
    });
    
  • 16

    你可以明确地调用 onBackPressed 是最简单的方法
    有关详细信息,请参阅Go back to previous activity

  • 4

    如果您已正确设置具有活动父级的AndroidManifest.xml文件,则可以使用:

    NavUtils.navigateUpFromSameTask(this);
    

    这是您的孩子活动 .

  • 71

    默认情况下,所有新活动/意图都具有后退/上一行为,除非您在调用活动上编码 finish() .

  • 436

    你想控制后退按钮的行为吗?您可以通过两种方法之一覆盖后退按钮(转到特定活动) .

    适用于Android 1.6及以下版本:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)  {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
            // do something on back.
            return true;
        }
    
        return super.onKeyDown(keyCode, event);
    }
    

    或者,如果您只支持Android 2.0或更高版本:

    @Override
    public void onBackPressed() {
        // do something on back.
        return;
    }
    

    有关详细信息:http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

  • 5

    只需调用这些方法即可完成当前活动或通过onBackPressed返回

    finish();
    

    要么

    onBackPressed();
    
  • 5

    Android活动存储在活动堆栈中 . 回到之前的活动可能意味着两件事 .

    • 您使用 startActivityForResult 从另一个活动中打开了新活动 . 在这种情况下,您只需从代码中调用 finishActivity() 函数,它将返回上一个活动 .

    • 跟踪活动堆栈 . 每当您使用intent启动新活动时,您都可以指定意图标记,如 FLAG_ACTIVITY_REORDER_TO_FRONTFLAG_ACTIVITY_PREVIOUS_IS_TOP . 您可以使用它在应用程序中的活动之间进行随机播放 . 虽然没有多用它们 . 看看这里的旗帜:http://developer.android.com/reference/android/content/Intent.html

    如评论中所述,如果使用 startActivity() 打开活动,则可以使用 finish() 将其关闭 . 如果你想使用向上按钮你可以在 onOptionsSelected(MenuItem item) 方法中捕获它,并检查项目ID与 android.R.id.home 不同,如注释中提到的 R.id.home .

  • 3

    只是这个

    super.onBackPressed();
    
  • 209

    除了所有提到的答案之外,他们仍然是另一种方法,假设你有两个班,A班和B班 .

    A类你已经做了一些活动,如复选框选择,打印出一些数据和意图到B类.B类,你想将多个值传递给A类并保持A类的先前状态,你可以使用,尝试这个替代方案方法或下载源代码来演示这一点

    http://whats-online.info/science-and-tutorials/125/Android-maintain-the-previous-state-of-activity-on-intent/

    要么

    http://developer.android.com/reference/android/content/Intent.html

  • 19

    使用intent启动第二个活动(根据您的要求使用 startActivitystartActivityForResult ) . 现在,当用户按下后退按钮时,顶部的当前活动将被关闭,之前的活动将被显示 .

    现在假设您有两个活动,一个用于为用户选择一些设置,如语言,国家等,选择后,用户单击“下一步”按钮转到登录表单(例如) . 现在如果登录失败,那么用户将登录登录活动,如果登录成功怎么办?

    如果登录成功,则必须启动另一项活动 . 这意味着将启动第三个活动,仍然有两个活动正在运行 . 在这种情况下,最好使用 startActivityForResult . 登录成功后,将OK数据发送回第一个活动并关闭登录活动 . 现在,当收到数据时,然后启动第三个活动并使用完成关闭第一个活动 .

  • 10

    我建议使用NavUtils.navigateUpFromSameTask(),这很容易也很简单,你可以从谷歌开发者那里学到它 . 希望我能帮到你!

  • 6

    在onCLick()方法中添加它,它将返回到您之前的活动

    完成();

    或者您可以使用它 . 它对我来说很完美

    @Override
      public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();
    
          if ( id == android.R.id.home ) {
             finish();
             return true;
           }
    
      return super.onOptionsItemSelected(item);
      }
    
  • 1

    你可以试试这个:

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
    
            finish();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
    
  • 0

    得到了同样的问题和

    finish();  OR super.onBackPressed();
    

    我工作得很好,两者都一样,但没有运气 return

  • 1

    回到之前的活动的情况很少:

    Case 1: 如果您想将结果恢复到之前的活动,那么 ActivityA.java

    Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
                   startActivityForResult(intent,2);
    

    FBHelperActivity.java

    Intent returnIntent = new Intent();
     setResult(RESULT_OK, returnIntent);
     finish();
    

    Case 2: ActivityA - > FBHelperActivity ----> ActivityA

    ActivityA.java

    Intent intent = new Intent(ActivityA.this, FBHelperActivity.class);
                   startActivity(intent);
    

    FBHelperActivity.java

    after getting of result call finish();
     By this way your second activity will finish and because 
     you did not call finish() in your first activity then
     automatic first activity is in back ground, will visible.
    
  • 28
    @Override
     public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
    
          if ( id == android.R.id.home ) {
              finish();
              return true;
          }
    
          return super.onOptionsItemSelected(item);
     }
    

    试试这个它在 toolbar back button 上同时适用于 hardware back button .

  • 63

    试试Activity#finish() . 这或多或少是默认情况下后退按钮的作用 .

  • 0

    试试这个,第一个活动

    Intent mainIntent = new Intent(Activity1.this, Activity2.class);
    this.startActivity(mainIntent);
    

    在你的第二个活动中

    @Override
    public void onBackPressed() {
        this.finish();
    }
    
  • 10

    只需点击 finish() 即可 . 它将带你到上一个活动 .

  • 0

    如果你想去只是想去以前的活动使用

    finish();
    

    要么

    onBackPressed();
    

    如果你想进入第二项活动或以下使用以下活动:

    intent = new Intent(MyFourthActivity.this , MySecondActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    //Bundle is optional
    Bundle bundle = new Bundle();
    bundle.putString("MyValue1", val1);
    intent.putExtras(bundle);
    //end Bundle
    startActivity(intent);
    
  • 4
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    

    这将使您进入之前的活动,保持其堆栈并清除堆栈后的所有活动 .

    例如,如果堆栈是A-> B-> C-> D并且您使用此标志启动B,则堆栈将为A-> B

  • 9

    FirstActivity 使用 startActivityForResult() 方法调用 SecondActivity

    对于例:

    Intent i = new Intent(this, SecondActivity.class);
    startActivityForResult(i, 1);
    

    SecondActivity 中设置要返回 FirstActivity 的数据 . 如果你没有设置任何 .

    例如:如果要发回数据,请在 secondActivity 中:

    Intent returnIntent = new Intent();
    returnIntent.putExtra("result",result);
    setResult(Activity.RESULT_OK,returnIntent);
    finish();
    

    如果您不想返回数据:

    Intent returnIntent = new Intent();
    setResult(Activity.RESULT_CANCELED, returnIntent);
    finish();
    

    现在在 FirstActivity 类中编写 onActivityResult() 方法的以下代码 .

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    
        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                String result=data.getStringExtra("result");
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
    }//onActivityResult
    
  • 4

    Try this is act as you have to press back button

    finish();
    onBackPressed();
    

相关问题