簡體   English   中英

轉到主屏幕而不是之前的活動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM