我知道这个问题以前被问过很多次,但是任何解决方案都不起作用,我的情况有点不同。
我有一个Activity
可以从许多不同的活动中调用的。但我希望当用户按下后退按钮时,应用程序应该进入主屏幕,而不是之前的活动。
一种使用方法,StartActivityFromResult()
但我必须在每个调用活动中使用它。
我知道这个问题以前被问过很多次,但是任何解决方案都不起作用,我的情况有点不同。
我有一个Activity
可以从许多不同的活动中调用的。但我希望当用户按下后退按钮时,应用程序应该进入主屏幕,而不是之前的活动。
一种使用方法,StartActivityFromResult()
但我必须在每个调用活动中使用它。
onBackPressed()
您可以按如下方式覆盖方法。它应该工作。
public void onBackPressed() {
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
如果您不想在按下后退按钮的位置支持您的活动,则添加到这个问题,然后finish()
在代码下方。
public void onBackPressed() {
Intent mainActivity = new Intent(Intent.ACTION_MAIN);
mainActivity.addCategory(Intent.CATEGORY_HOME);
mainActivity.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(mainActivity);
finish();
}
您也可以简单地调用finish()
活动上的方法。
只需返回主页活动即可添加此代码
@Override
public void onBackPressed()
{
Intent intent=new Intent(currentactivity.this,Mainactivity.class);
startActivity(intent);
finish();
}// on back Pressed first add activity where you stand and add activity where you go
只需将 Intent 直接发送回家即可。这可以通过设置该意图的操作和类别来完成。
有关详细信息,请查看 Intent 上的文档。
如果您有一个 Activity A 并制作 3 个片段,例如 B、C 和Home_Fragment ,这很简单。现在,如果您在片段 B 或 C 中并按下返回按钮,您希望每次都在Home_Fragment上移动。
然后你必须重写onBackPressed()
Activity A 中的方法,并且当你跳转到任何片段时,然后给出一个特定的TAG 或 name,你就会在 Activity A 中识别那个片段。
我举的例子你很容易理解:
从活动 A 转移到片段 C
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new C_fragment(),"xyz").commit();
}
或者,如果您从片段 B 移动到片段 C,并且在后按时,您想进入片段 D,请执行以下操作:
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
getActivity().getSupportFragmentManager().beginTransaction()
.add(R.id.container, new C_frament(), "xyz").commit();
((ActionBarActivity) getActivity()).getSupportActionBar().setTitle("Fragment C");
}
});
现在您只需覆盖主要活动中的 onBackPressed()方法,如下所示:
@Override
public void onBackPressed() {
FragmentManager fragmentManager =getSupportFragmentManager();
if (((C_fragment) getSupportFragmentManager().findFragmentByTag("xyz")) != null
&& ((C_fragment) getSupportFragmentManager().findFragmentByTag("xyz")).isVisible()) {
Fragment fragment = new Home_Fragment();
fragmentManager.beginTransaction()
.replace(R.id.container, fragment)
.commit();
getSupportActionBar().setTitle("Home fragment ");
} else {
super.onBackPressed();
}
}
Button btn = (Button) findViewById(R.id.button2);
btn.setOnClickListener(new OnClickListener() {
public void onClick(View v)
{
Intent i = new Intent(AccountActivity.this, HomeActivity.class);
startActivity(i);
}
});