1

「戻る」ボタンを押すと(エミュレーターとGalaxy S2の両方でテスト済み)、コミットされたフラグメントトランザクションの数に関係なく、アプリケーションが閉じます:(

わかりました、念のため、フラグメントトランザクションの実装を投稿しますが、それらが問題であるとは思えません

@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    Fragment fragment;
    switch(tab.getPosition()) {
    case(0):
        fragment = new Fragment1();
        break;
    case(1):
        fragment = new Fragment2();
        break;
    case(2):
        fragment = new Fragment3();
        break;
    default:
        fragment = new Fragment();
        Toast.makeText(getBaseContext(), "Error", Toast.LENGTH_SHORT).show();
        break;
    }
    Bundle args = new Bundle();
    fragment.setArguments(args);
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.okvir, fragment);
    ft.addToBackStack(null);
    ft.commit();
}

また、

public void searchResultsView(List<School> results) {
    setResults(results);
    FragmentResults searchFragment = new FragmentResults();
    Bundle args = new Bundle();
    searchFragment.setArguments(args);
    getFragmentManager().beginTransaction().replace(R.id.okvir, searchFragment).addToBackStack(null).commit();
}

そして今、私はアプリケーションに関する技術的な詳細を提供しようとします。そうすれば、何が妨げになっているのかがわかります (皮肉なことです)。アプリケーションには 1 つのアクティビティがあり、結論として、ActionBar を使用して TabHost を初期化します。ActionBar.TabHost には、Fragment1、Fragment2、Fragment3 に対応する 3 つのタブが関連付けられています。FragmentResults は Fragment2 タブから呼び出されます。追加情報が必要な場合は、コメントでお知らせください。

お時間とご尽力いただきありがとうございます。乾杯

PS興味深いことに、DialogFragmentを呼び出すと、AddToBackStack(null)メソッドがなくても「戻る」ボタンを押して、それを呼び出したフラグメントに戻り、アプリを閉じません...

4

1 に答える 1