2016-06-11 14 views
0

TabLayoutとオプションメニューを使用してプログラムを作成しようとしていますが、これを選択するとタブとともにフラグメントを追加または削除できます。私はタブを削除することができますが、私はタブが保持するフラグメントを削除する必要があるため、他に何が必要なのか理解できません。また、私はちょうど見えないフラグメントの位置を並べ替える必要があります把握するため。これで私を助けてくれますか? mainAcitivity下TabLayout&FragmentStatePagerAdapterからタブとそれに関連付けられたフラグメントを削除する方法

この私が

tabLayout = (TabLayout) findViewById(R.id.tab_layout); 

     tab1= tabLayout.newTab().setText("TAB 1"); 
     tabLayout.addTab(tab1); 

     tab2 = tabLayout.newTab().setText("TAB 2"); 
     tabLayout.addTab(tabKantipur); 

タブを追加する方法。これはFragmentstatePagerAdapter

public class TabPagerAdapter extends FragmentStatePagerAdapter { 

    int tabCount; 

    public TabPagerAdapter(FragmentManager fm, int numberOfTabs) { 
     super(fm); 
     this.tabCount = numberOfTabs; 
    } 

    @Override 
    public int getItemPosition(Object object) { 
     return super.getItemPosition(object); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       return NewsFragment.newInstance("data for fragment 1"); 
      case 1: 
       return NewsFragment.newInstance("data for fragment 2"); 
      default: 
       return null; 
     } 

    } 

    @Override 
    public int getCount() { 
     return tabCount; 
    } 
} 

です基本的に、ここでNewsFragmentは、その新しいインスタンスのタブで使用されている断片です。 onActivityResultの下で私はこの唯一の最初のタブは、私はあまりにも関連するフラグメントを削除する方法を知りたいのですが削除されるそうであるようにfragmetns

mpagerAdapter = new TabPagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount()); 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
removedTab = ..data received from ooption menu 
// here I want to remove the Tab & the fragments (tab1 & its fragment) 


if (removeTab == "tab1") { 
    tabLayout.removeTab(tab1); 
    mpagerAdapter.notifyDataSetChanged(); 
} 

} 

を追加または削除するには、オプションメニューから要求されたデータを取得しています。

+0

あなたは同じステップでそれをしたいですか?わかりませんが、常にプログラムでフラグメントを削除できます。 http://stackoverflow.com/questions/22474584/remove-old-fragment-from-fragment-manager –

+0

また、 'removeTab ==" tab1 "'はJavaの文字列を比較する方法ではありません –

+0

はい私はそれをしたい私が数週間過ごした同じステップはまだそれを行うことができません。すべてのチュートリアルでは、フラグメントへのタグの設定について説明していますが、わかるように、私のフラグメントにはTagはありません。 – choman

答えて

0

フラグメントを明示的に削除する必要はありませんが、フラグメントを削除できます。

このタブを削除して、viewPagerAdapterインスタンスでnotifyDataSetChangedを実行すると、フラグメントを削除することができます。

+0

私はすでにそれを使用していますが、フラグメントを削除しません。上記のコードを確認してください。 mpagerAdapter.notifyDataSetChanged(); – choman

+0

また、tabCount変数を変更してからnotifyDataSetChangesd()を実行する必要があります。 – Ritesh

関連する問題