android 活动返回,Android:返回上一个活动

Android activities are stored in the activity stack. Going back to a previous activity could mean two things.

You opened the new activity from another activity with startActivityForResult. In that case you can just call the finishActivity() function from your code and it'll take you back to the previous activity.

Keep track of the activity stack. Whenever you start a new activity with an intent you can specify an intent flag like FLAG_ACTIVITY_REORDER_TO_FRONT or FLAG_ACTIVITY_PREVIOUS_IS_TOP. You can use this to shuffle between the activities in your application. Haven't used them much though. Have a look at the flags here: http://developer.android.com/reference/android/content/Intent.html

As mentioned in the comments, if the activity is opened with startActivity() then one can close it with finish().

If you wish to use the Up button you can catch that in onOptionsSelected(MenuItem item) method with checking the item ID against android.R.id.home unlike R.id.home as mentioned in the comments.

Try Activity#finish(). This is more or less what the back button does by default.

Just write on click finish(). It will take you to the previous Activity.

Just this

super.onBackPressed();

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

This will get you to a previous activity keeping its stack and clearing all activities after it from the stack.

For example, if stack was A->B->C->D and you start B with this flag, stack will be A->B

Are you wanting to take control of the back button behavior? You can override the back button (to go to a specific activity) via one of two methods.

For Android 1.6 and below:

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

}

Or if you are only supporting Android 2.0 or greater:

@Override

public void onBackPressed() {

// do something on back.

return;

}

Just call these method to finish current activity or to go back by onBackPressed

finish();

OR

onBackPressed();

if you want to go to just want to go to previous activity use

finish();

OR

onBackPressed();

if you want to go to second activity or below that use following:

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

If you have setup correctly the AndroidManifest.xml file with activity parent, you can use :

NavUtils.navigateUpFromSameTask(this);

Where this is your child activity.

Add this in your onCLick() method, it will go back to your previous activity

finish();

or You can use this. It worked perfectly for me

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if ( id == android.R.id.home ) {

finish();

return true;

}

return super.onOptionsItemSelected(item);

}

You can explicitly call onBackPressed is the easiest way

Refer Go back to previous activity for details

Start the second activity using intent (either use startActivity or startActivityForResult according to your requirements). Now when user press back button, the current activity on top will be closed and the previous will be shown.

Now Lets say you have two activities, one for selecting some settings for the user, like language, country etc, and after selecting it, the user clicks on Next button to go to the login form (for example) . Now if the login is unsuccessful, then the user will be on the login activity, what if login is successful ?

If login is successful, then you have to start another activity. It means a third activity will be started, and still there are two activities running. In this case, it will be good to use startActivityForResult. When login is successful, send OK data back to first activity and close login activity. Now when the data is received, then start the third activity and close the first activity by using finish.

Got the same problem and

finish(); OR super.onBackPressed();

worked fine for me, both worked same, but no luck with return

You can try this:

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {

finish();

return true;

}

return super.onKeyDown(keyCode, event);

}

Try this is act as you have to press back button

finish();

onBackPressed();

All new activities/intents by default have back/previous behavior, unless you have coded a finish() on the calling activity.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值