4

FragmentPagerSupport は FragmentActivity クラスで、FragmentA と FragmentB は 2 つの異なるタブを表しています。最初のタブには、EditText とボタンがあります。私の仕事は、ボタンをクリックして2番目のタブを開き、2番目のタブにEditText値を表示する必要があることです。FragmentStatePagerAdapter も使用しています。

次のコードは、FragmentActivity の onCreate() タブを構築しています。

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar.newTab()
                .setText(mSectionsPagerAdapter.getPageTitle(i))
                .setTabListener(this));
    }

FragmentStatePagerAdapter の私のコードは次のとおりです。

public Fragment getItem(int position) {
    Fragment fragment = null;
    Bundle args = new Bundle();         
    switch (position) {
    case 0:
        fragment = FragmentA();
        args.putInt(FragmentA.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    case 1:
        fragment = new FragmentB();
        args.putInt(FragmentB.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    }
return fragment;
}

ボタンクリック時の FragmentA の私のコードは次のとおりです。

confirmButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {


    }
}

今、私はここで立ち往生しました。2 番目のタブを呼び出して、tab1 EditText 値に従って値を表示するためのコードが見つかりません。

4

1 に答える 1

12

ViewPagerの名前がmPagerであると仮定します。

public void onClick(View view)
{
     mPager.setCurrentItem(1); // Change to page 1, i.e., FragmentB
}

このトレーニングページを詳しく読むことをお勧めします。これは、フラグメントからフラグメントに情報を渡すために使用されるいくつかの戦略に入ります(通常、アクティビティにフラグメントが呼び出すことができるインターフェイスを実装させることによって)。

それは本当にあなたがあなたのフラグメントをどれだけ結合させたいかによります。あなたは確かに次のようなものを使うことができます

((FragmentB)getActivity().getSupportFragmentManager().findFragmentByTag(
    "android:switcher:" + pager.getId() + ":1")).setExitText(text)

FragmentAからFragmentBにテキストを渡しますが、これにより、フラグメントが相互に、およびアクティビティに含まれるViewPagerに緊密に結合されます。

私は提案します

  1. goToFragmentB(String exitText)などの単一のメソッドを含むインターフェイスをアクティビティに実装させます
  2. FragmentAのonClickでこのメソッドを呼び出します
  3. goToFragmentBを持っている:
于 2013-03-01T04:42:18.287 に答える