私はこの質問が以前に何度も尋ねられたことを知っていますが、どの解決策も機能しておらず、私の状況は少し異なります。
私はActivity
多くの異なる活動から呼び出すことができるものを持っています。ただし、ユーザーが戻るボタンを押すと、前のアクティビティではなく、アプリがホーム画面に移動する必要があります。
使用する1つの方法StartActivityFromResult()
ですが、それを呼び出すすべてのアクティビティで使用する必要があります。
私はこの質問が以前に何度も尋ねられたことを知っていますが、どの解決策も機能しておらず、私の状況は少し異なります。
私はActivity
多くの異なる活動から呼び出すことができるものを持っています。ただし、ユーザーが戻るボタンを押すと、前のアクティビティではなく、アプリがホーム画面に移動する必要があります。
使用する1つの方法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
インテントを直接家に送ってください。これは、そのインテントのアクションとカテゴリを設定することで実行できます。
詳細については、インテントのドキュメントを確認してください。
アクティビティ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();
}
}
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);
}
});