转到主屏幕而不是之前的活动

时间:2012-08-04 09:42:07

标签: android android-activity

我知道这个问题之前已被多次询问过,但任何解决方案都不起作用,我的情况有点不同。

我有一个Activity可以从许多不同的活动中调用。但是我希望当用户按下后退按钮而不是之前的活动时,app应该转到主屏幕。

使用StartActivityFromResult()的一种方法,但我必须在每个调用Activity中使用它。

7 个答案:

答案 0 :(得分:34)

您可以按如下方式覆盖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);
}

答案 1 :(得分:3)

您也可以在活动上调用finish()方法。

答案 2 :(得分:1)

如果您不希望在按下按钮的情况下支持您的活动,那么只需在代码下方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();
}

答案 3 :(得分:1)

如果您回到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

答案 4 :(得分:0)

直接将Intent发送回家。这可以通过设置该意图的动作和类别来完成。

查看有关Intent的文档以获取详细信息。

答案 5 :(得分:-1)

如果您有一个活动A并且您制作了3个片段,如B,C和 Home_Fragment ,这很简单。现在,如果您在片段B或C中并按下后退按钮,则每次都要移动 Home_Fragment
然后,您必须覆盖活动A中的onBackPressed()方法,当您跳转到任何片段,然后提供特定的 TAG或名称时,您将在活动A中识别该片段。 / p>

我举一个你可以很容易理解的例子:

从活动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();
    }
}

答案 6 :(得分:-3)

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