繁体   English   中英

Android: Go 回到上一个活动

[英]Android: Go back to previous activity

我想在 android 应用程序上做一些简单的事情。 go 怎么可能回到之前的活动。

我需要什么代码才能 go 返回上一个活动

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

  1. 您使用startActivityForResult从另一个活动打开了新活动。 在这种情况下,您只需从您的代码中调用finishActivity()函数,它就会带您回到上一个活动。

  2. 跟踪活动堆栈。 每当您开始一个带有意图的新活动时,您都可以指定一个意图标志,如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.homeR.id.home中提到的R.id.home不同。

尝试Activity#finish() 这或多或少是默认后退按钮的作用。

只需点击完成()写。 它将带您到上一个活动。

就这个

super.onBackPressed();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

这将使您进入前一个活动,保留其堆栈并从堆栈中清除其后的所有活动。

例如,如果堆栈是 A->B->C->D 并且你用这个标志开始 B,堆栈将是 A->B

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

对于 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

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

finish();

onBackPressed();

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

完成();

或者你可以使用这个。 它非常适合我

 @Override
  public boolean onOptionsItemSelected(MenuItem item) {
  int id = item.getItemId();

      if ( id == android.R.id.home ) {
         finish();
         return true;
       }

  return super.onOptionsItemSelected(item);
  }

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

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

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

NavUtils.navigateUpFromSameTask(this);

这是您孩子的活动。

试试这个,因为你必须按下后退按钮

finish();
super.onBackPressed();

遇到了同样的问题

finish();  OR super.onBackPressed();

对我来说工作得很好,两者都工作得一样,但没有return

您可以显式调用onBackPressed是最简单的方法
有关详细信息,请参阅返回上一个活动

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

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

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

你可以试试这个:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

        finish();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

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

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

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

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

我推荐NavUtils.navigateUpFromSameTask(),它很简单也很简单,你可以从google developer那里学习。希望我能帮助你!

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
      int id = item.getItemId();

      if ( id == android.R.id.home ) {
          finish();
          return true;
      }

      return super.onOptionsItemSelected(item);
 }

试试这个,它既适用于工具栏后退按钮,也适用于硬件后退按钮

有几种情况可以返回到您之前的活动:

案例 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();

案例2: ActivityA-->FBHelperActivity-->ActivityA

活动A.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.

首先,如果你想回到以前的活动,你需要记住的事情。 然后在使用 Intent 转到另一个活动时不要调用 finish() 方法。

之后,您有两种方法可以从当前活动返回到之前的活动:

只需在按钮单击侦听器下调用: finish() ,或覆盖以下方法以使用系统后退按钮返回:

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

除了所有提到的答案之外,它们仍然是一种替代方法,假设您有两个类,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

试试这个,第一个活动

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

在你的第二个活动中

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

要 go 通过单击后退按钮从一个活动返回到另一个活动,请使用下面给出的代码使用当前活动名称,然后使用目标活动。

@Override
public void onBackPressed() {
    // do something on back.
    startActivity(new Intent(secondActivity.this, MainActivity.class));
    return;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM