12

私はこの質問が以前に何度も尋ねられたことを知っていますが、どの解決策も機能しておらず、私の状況は少し異なります。

私はActivity多くの異なる活動から呼び出すことができるものを持っています。ただし、ユーザーが戻るボタンを押すと、前のアクティビティではなく、アプリがホーム画面に移動する必要があります。

使用する1つの方法StartActivityFromResult()ですが、それを呼び出すすべてのアクティビティで使用する必要があります。

4

7 に答える 7

36

次のようにメソッドをオーバーライドできます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);
}
于 2012-08-04T09:59:10.253 に答える
4

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();
}
于 2013-02-15T10:36:31.127 に答える
3

finish()アクティビティのメソッドを呼び出すこともできます。

于 2012-08-04T10:10:42.147 に答える
1

このコードを追加するよりも、ホームアクティビティに戻る場合

@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
于 2018-04-11T10:01:55.527 に答える
0

インテントを直接家に送ってください。これは、そのインテントのアクションとカテゴリを設定することで実行できます。

詳細については、インテントのドキュメントを確認してください。

于 2012-08-04T09:49:38.693 に答える
-1

アクティビティAがあり、B、C、 Home_Fragmentのような3つのフラグメントを作成する場合は簡単です。ここで、フラグメント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();
    }
}
于 2015-05-04T07:13:34.070 に答える
-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);
                }
            });
于 2012-08-04T09:57:06.760 に答える