複数のアクティビティを含むアプリがあり、それぞれが複数のフラグメントを使用する場合があります。
1 つのアクティビティ (IBAsTabsActivity と呼ばれる) は SherlockFragmentActivity を拡張し、選択されたタブに応じて異なるフラグメントが読み込まれるサンプル コードを使用しています。考えられるフラグメントの 1 つは「SearchableListFragment」と呼ばれます。これはすべて正常に機能しています。IBAsTabsActivity に移動するボタンと AnAlternativeActivity に移動するボタンの 2 つのボタンを持つ「ホーム」アクティビティがあります。ボタンを押して IBAsTabsActivity に移動し、いくつかのタブを表示すると、戻るボタンを押すと、「ホーム」にまっすぐジャンプします。
ここで、AnAlternativeActivity を起動して実行したいと考えています。タブがないため、Sherlock コードは使用されていません。代わりに私はこれを持っています:
public class AnAlternativeActivity extends FragmentActivity implements OnClickListener
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.blank_fragment_holder);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
SearchableListFragment fb = new SearchableListFragment();
ft.replace(R.id.fragment_holding_layout, fb);
ft.addToBackStack("replacingFragmentA");
ft.commit();
}
これはすべて、ホーム画面のボタンをクリックして AnAlternativeActivity を呼び出す場合と同じように正常に機能し、SearchableListFragment() (fragment_holding_layout 内) とその内容が正しく表示されます。しかし、戻るボタンをクリックすると、fragment_holding_layout 内のフラグメントは消えますが、AnAlternativeActivity は実行されたままになります。AnAlternativeActivity を終了してホーム アクティビティに戻るには、戻るボタンをもう一度押す必要があります。
おそらく、この問題を解決するためにいくつかの醜いコードを作成できますが、このシナリオに対処する標準的な方法があると思います。何か案は?