0

を使用した Android アプリケーションがあり、MainActivityこれを実行して にナビゲーション タブを作成しますonCreate

ActionBar myActionBar = getActionBar();
myActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = myActionBar.newTab().setText("FirstTab").setIcon(R.drawable.first_tab)
    .setTabListener(new TabListener<FirstTabFragment>(this, "FirstTab", 
    FirstTabFragment.class));
... more tabs ...

TabListener私は developer.android.com からこれを使用します: http://developer.android.com/reference/android/app/ActionBar.html#newTab() :

public static class TabListener<T extends Fragment> implements ActionBar.TabListener {
    ...
    public TabListener(Activity activity, String tag, Class<T> clz) { ... }
}

したがって、ユーザーが最初のタブをクリックすると、フラグメントFirstTabFragmentが呼び出されて実行 されonCreateViewます。

私の問題は、ユーザーがボタンをクリックした場合、次のことを行い、次のフラグメントに切り替える方法がわからないことです。

private OnClickListener firstTabListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (v == button1) {
            Intent intent = new Intent(???, MyDetailsFragment.class);
            startActivity(intent);
        } else if (...) {
            ...
        }
    }
};

選択したアイテムのMyDetailsFragment詳細を表示する必要があるため (ボタン クリック)、詳細フラグメントにドリルダウンし、新しいフラグメントに追加データを提供して、詳細フラグメントが選択したアイテムのどの詳細を表示する必要があるかを認識できるようにします。選択したタブは変更されず、戻るボタンは FirstTabFragment ページに戻る必要があります。

新しいフラグメントを開始する必要があると思いますが、それは不可能です。メソッドの名前は、フラグメントではstartActivityなく新しいアクティビティを開始することを示しています。それで、私は を使用しMainActivityてそこに新しいフラグメントを入れなければなりませんか? (Android 4 デバイスのみを対象としているため、android-support-v4.jar ライブラリは使用しません)

どうすればこの問題を解決できますか? 何か案は?

4

1 に答える 1

1

フラグメントから、ホスティング アクティビティのメソッドを呼び出して、ボタン クリック イベントについて通知します。その後、アクティビティは適切なことを何でも実行できます。

個人的には、ほとんどの場合、タブの内容を完全に置き換えることは不適切だと思いますが、それは大歓迎です。

于 2013-02-17T15:41:22.097 に答える