2017-10-12 8 views
-1

子フラグメントからボタンをクリックすると、次のタブに切り替える必要があります。子フラグメントから次のタブを選択する方法

これは私が切り替え

親の内側にタブを切り替えることが

TabLayout myTabs= (TabLayout) findViewById(R.id.my_tabs); 

Button chkBtn = (Button) findViewById(R.id.check_button); 

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(1); 
    } 
}); 
のメソッドを作成し、どのように私のセットアップタブの親で、

TabAdapter adapter; 

private void setUpTabs(ViewPager viewPager) { 

    adapter = new TabAdapter(getSupportFragmentManager()); 
    adapter.addFragment(new FirstTabFragment(), "First Tab"); 
    adapter.addFragment(new SecondTabFragment(), "Second Tab"); 
    viewPager.setAdapter(adapter); 

} 

そして、私のTabAdapterクラスがあり、

public class TabAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public TabAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFragment(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

です親クラス内のタブは正常に動作します。しかし、どうすれば私は同じ内部で行うことができますFirstTabFragment、助けてください。

答えて

1

を呼び出す必要があり、私はつもりシェアだ私がきたもの実装されました。

フラグメントのJavaファイルからviewPagerにアクセスするだけで、親アクティビティでviewPagerと宣言してください。

public static ViewPager viewPager; 

その後の断片でボタンのonClick方法やonClickListenerで、あなただけのこれを使用することができます。

ParentActivity.viewPager.arrowScroll(View.FOCUS_RIGHT); 

、これが第2のフラグメントにごviewpagerをスクロール滑らかになり、あなたが直接スクロールからユーザーを制限したい場合は、はい、あなたはviewPagerのスクロールを無効にすることができhereをお読みください。ユーザーはちょうど

ParentActivity.viewPager.arrowScroll(View.FOCUS_LEFT); 

バックFirstFragmentに行きたいとはい場合

ます。また左にフォーカスをシフトすることができ、それは愚かな私に、答えを投稿する前に私の最初のテストとして働いています。

3

あなたは、現在選択されているページを設定しsetCurrentItem(int item)

を使用する必要があります。 `

サンプルコード

chkBtn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     viewPager.setCurrentItem(2); 
    } 
}); 
+0

ありがとうございました!それは私を助けた。私は問題を編集しました。あなたはそれについて助けてください – ChyperX

+0

@ user8595331あなたはもっと説明できますか –

2

あなたは自分のUIは、よりインタラクティブかつ格好良い作るために

viewPager.setCurrentItem(fragmentIdex);

関連する問題