1

左側のフラグメントにリストを表示し、右側に詳細なフラグメントを表示するタブを作成しようとしています。ユーザーがリストアイテムをクリックすると、右側のフラグメントが適切なフラグメントに変更されます。

私はAndroidを初めて使用するので、チュートリアルを使用しました。タブリステナーを使用して何かを行う必要があることはわかっています。

     public staticclassTabListenerはActionBar.TabListenerを実装します
     {{
        プライベートファイナルアクティビティmActivity;
        プライベート最終文字列mTag;
        プライベートファイナルクラスmClass;
        プライベートファイナルバンドルmArgs;
        プライベートフラグメントmFragment;

public TabListener(Activity activity, String tag, Class<T> clz) { this(activity, tag, clz, null); } public TabListener(Activity activity, String tag, Class<T> clz, Bundle args) { mActivity = activity; mTag = tag; mClass = clz; mArgs = args; // Check to see if we already have a fragment for this tab, probably // from a previously saved state. If so, deactivate it, because our // initial state is that a tab isn't shown. mFragment = mActivity.getFragmentManager().findFragmentByTag(mTag); if (mFragment != null && !mFragment.isDetached()) { ft = mActivity.getFragmentManager().beginTransaction(); ft.detach(mFragment); ft.commit(); } } public void onTabSelected(Tab tab, FragmentTransaction ft) { if (mFragment == null) { mFragment = Fragment.instantiate(mActivity, mClass.getName(), mArgs); ft.add(android.R.id.content, mFragment, mTag); tabtag = mTag; } else { ft.attach(mFragment); } } public void onTabUnselected(Tab tab, FragmentTransaction ft) { if (mFragment != null) { ft.detach(mFragment); } } public void onTabReselected(Tab tab, FragmentTransaction ft) { //Toast.makeText(mActivity, "Reselected!", Toast.LENGTH_SHORT).show(); } }

私が必要としているもう1つの良い例は、Gmailアプリのようなもので、左側にリスト、右側に詳細があり、上部にアクションバー(私のタブがあります)があります。

このリスナーは、クリックされたタブごとにフラグメントを膨らませることを理解していますが、 2つのフラグメントを含むレイアウトを膨らませるにはどうすればよいですか?

4

1 に答える 1

1

2つのフラグメントでレイアウトを拡張するのは簡単です。レイアウト内の各フラグメントのクラスを指定するだけです。ただし、静的(レイアウトXML定義)フラグメントと動的フラグメントを混在させることはできません。つまり、コードで新しいフラグメントを動的にインスタンス化して、元々XMLでフラグメントが入力されていたViewコンテナ(たとえば、LinearLayout)に挿入することはできません。

于 2012-10-05T09:50:17.040 に答える