-4

初めてフラグメントを実装するので、助けてください。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <fragment android:name="com.example.news.ArticleListFragment"
            android:id="@+id/list"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
    <fragment android:name="com.example.news.ArticleReaderFragment"
            android:id="@+id/viewer"
            android:layout_weight="2"
            android:layout_width="0dp"
            android:layout_height="match_parent" />
</LinearLayout>

ID が「list」のフラグメントは一定のままである必要がありますが、ID が「viewer」のフラグメントは異なるクラスを呼び出せるようにする必要があります。

(クラスは Activity を拡張することに注意してください。)

私の質問は簡単です: 私は 4 つのクラス (ACTIVITY の拡張) を持っています。画面を 2 つに分割したい。リストビューを含む左側は一定のままです。リスト ビューのクリックで、クラス (ACTIVITY の拡張) を開きたいのですが、右側の部分 (残りの画面) でのみ開きます。

4

4 に答える 4

1

フラグメントは個別のアクティビティのようなものであるため、変更を加えない限り、1つのフラグメントに対するアクションは他のフラグメントに影響を与えません。uが左側のフラグメントにリストビューを持っていると仮定して、そのアクティビティにonItemClickListenerを配置します。itemclickごとに、右側のフラグメントのアクティビティを切り替えます。

OnItemClickイベントのサンプルコード

Fragment fragment=new activity1();
fragmentManager fm=getFragmentManager();
FragmentTransaction ft=fm.beginTransaction();
ft.replace(R.id.frame2,fragment);
ft.commit();

上記のコードセグメントでは、 activity1は、適切なフラグメントにアタッチする新しいクラスです。R.id.frame2は、適切なフラグメントで使用されるフレームレイアウトのIDです。

于 2013-02-04T06:33:40.467 に答える
1

基本的な質問です。ここから始めるべきです。また、このトピックはあなたにも役立ちます。

于 2013-02-04T06:20:42.283 に答える
0

Fragmentクラスは、さまざまな結果を達成するためにさまざまな方法で使用できます。そのコアでは、より大きなアクティビティ内で実行されている特定の操作またはインターフェースを表します。フラグメントは、それが含まれるアクティビティと密接に関連しており、1つ以外で使用することはできません。Fragmentは独自のライフサイクルを定義しますが、そのライフサイクルはそのアクティビティに依存します。アクティビティが停止した場合、その中のフラグメントを開始することはできません。アクティビティが破棄されると、すべてのフラグメントが破棄されます。

    MyFragment newFragment = new MyFragment();// MyFragment is a Fragment class
    FragmentTransaction transaction = getFragmentManager().beginTransaction();

        transaction.add(R.id.fra,newFragment, tag);
        transaction.addToBackStack(null);

        transaction.commit();

サンプルコード

サンプルコードの変更

          ft.add(android.R.id.content,fragTwo, "tag"); 

          ft.add(R.id.fra,fragTwo, "tag");

そしてdetail.javaにいくつかのコードを追加します

                 public void onStart() {
    // TODO Auto-generated method stub
    tv.setText(data);
    b.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            FragmentManager fm = getFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            fm.beginTransaction();
            Fragment fragTwo = new MyFragment();
            //String tag = getActivity().GetFragmentID();
            Fragment f= fm.findFragmentById(getId());
            ft.replace(R.id.fra,fragTwo, "tag");
            ft.hide(f);  
            ft.commit(); 


        }
    });


    super.onStart();
}
于 2013-02-04T09:09:58.770 に答える