0

2 つのフラグメントを含むサンプル アプリをダウンロードしました。左のフラグメントはアイテムを示し、右のフラグメントは選択されたアイテムに基づいた内容を示します。

私がやりたいことは、表示されているリストを更新するために使用できる左のフラグメントにもボタンを付けることです。したがって、リストとボタンを同じフラグメントに同時に表示する必要があるのはなぜですか。

これはできますか?私のコード例は次のとおりです: -

レイアウトxml

<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.android.fragments.HeadlinesFragment"
              android:id="@+id/headlines_fragment"
              android:layout_weight="1"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

    <fragment android:name="com.example.android.fragments.ArticleFragment"
              android:id="@+id/article_fragment"
              android:layout_weight="2"
              android:layout_width="0dp"
              android:layout_height="match_parent" />

</LinearLayout>

主なアクティビティ コードは次のとおりです。 -

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.news_articles);

    // Check whether the activity is using the layout version with
    // the fragment_container FrameLayout. If so, we must add the first
    // fragment
    if (findViewById(R.id.fragment_container) != null) {

        // However, if we're being restored from a previous state,
        // then we don't need to do anything and should return or else
        // we could end up with overlapping fragments.
        if (savedInstanceState != null) {
            return;
        }

        // Create an instance of ExampleFragment
        HeadlinesFragment firstFragment = new HeadlinesFragment();

        // In case this activity was started with special instructions from
        // an Intent,
        // pass the Intent's extras to the fragment as arguments
        firstFragment.setArguments(getIntent().getExtras());

        FragmentManager fragmentManager = getFragmentManager();

        FragmentTransaction transaction = getSupportFragmentManager()
                .beginTransaction();

        transaction.add(R.id.fragment_container, firstFragment);

        transaction.commit();

    }
}

R.id.fragment_container が完了した後にボタンを表示することもできますか?

ありがとう

マーティン

4

1 に答える 1

0

There's a number of ways of doing this. The simplest way is to let the activity keep references to the fragments, and create a method in the list fragment that can be called by the other fragment through a method in the activity.

Another way of doing is via Broadcasts.

A third way of doing it is use RoboGuice and inject a class in both fragments that establishes communication between the fragments.

于 2012-11-01T11:42:08.060 に答える