[英]Go to home screen instead of previous Activity
我知道这个问题之前已被多次询问,但任何解决方案都不起作用,我的情况有点不同。
我有一个Activity
,可以从许多不同的活动来调用。 但是我希望当用户按下后退按钮而不是之前的活动时,app应该转到主屏幕。
一种使用StartActivityFromResult()
但是我必须在每个调用Activity中使用它。
您可以按如下方式覆盖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()
方法。
如果您不希望在按下按钮的情况下返回您的活动,那么只需在代码下方finish()
一个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();
}
如果您回到Home活动,只需添加此代码即可
@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上的文档。
如果你有一个活动A并且你制作了3个片段,如B,C和Home_Fragment ,这很简单。 现在,如果您在片段B或C中并按下后退按钮, 则每次都要移动Home_Fragment 。
然后你必须覆盖活动A中的onBackPressed()
方法,当你跳转到任何片段,然后给出一个特定的TAG或名称时 ,你将识别活动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);
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.