2016-10-08 6 views
1

TabFrag1のTabFrag3からTabFrag1が自動的にすべてのフラグメントをリロードします。 TabFrag1のTabfrag3から切り替えるときに、 "onCreateView"を停止する必要があります。 機能が既にロードされている場合、どのように機能を停止できますか? 私はそれがちょうど始めに働くことを望みます。スイッチフラグメントの "onCreateView"の停止方法

編集:

MainActivity:

public class SectionsPagerAdapter extends FragmentPagerAdapter { 

    public SectionsPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case 0: 
       TabFragment1 tab1 = new TabFragment1(); 
       return tab1; 
      case 1: 
       TabFragment2 tab2 = new TabFragment2(); 
       return tab2; 
      case 2: 
       TabFragment3 tab3 = new TabFragment3(); 
       return tab3; 
      default: 
       return null; 
     } 
    } 
} 

TabFragment1

public class TabFragment1 extends Fragment { 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     View inflatedView = inflater.inflate(R.layout.tab_fragment_1, container, false); 
     final ListView list= (ListView) inflatedView.findViewById(R.id.list); 
     new function();//this function load json data 
     return inflatedView; 
} 

何度も何度もこのonCreateView課金データ...

編集2: 私はここに解決策を見つけました:https://stackoverflow.com/a/36518677/6910082

+0

助けてくれるほどの情報はありません。複数のフラグメントを持つビューページャーを使用している場合は、おそらくsetOffscreenPageLimit()を試してください。 –

+0

タブに移動するときにページをリフレッシュしないようにしたいですか? – Naz141

+0

コードを見てみてください。 "タブにナビゲートするときにページをリフレッシュしないようにしたいのですか?" =>はい、このフラグメントをリフレッシュする必要はありません。 – Helpme

答えて

0

insteadreplaceに追加する必要があります。新しいFragmentを追加する前に、Fragment &が存在しない場合はそれを表示し、次にaddを非表示にして、現在表示されているFragmentを非表示にする場合は、すでにで終了しているかどうかを確認する必要があります。例えば

:それは、その後currentVisibleFragmentを隠し、他fragmentToAddOrShowcurrentVisibleFragmentを隠し、追加表示されている場合fragmentToAddOrShownot nullであるならば、あなたは確認する必要があり

Fragment currentVisibleFragment = getVisibleFragment(fragmentManager); 
Fragment fragmentToAddOrShow = getFragmentByTag(fragmentManager, FormsListView.TAG); 

@Nullable @Override public Fragment getFragmentByTag(@NonNull FragmentManager fragmentManager, @NonNull String tag) { 
    return fragmentManager.findFragmentByTag(tag);//returns fragment by its TAG. 
} 

@Nullable @Override public Fragment getVisibleFragment(@NonNull FragmentManager manager) { 
    List<Fragment> fragments = manager.getFragments(); 
    if (fragments != null && !fragments.isEmpty()) { 
     for (Fragment fragment : fragments) { 
      if (fragment != null && fragment.isVisible()) { 
       Logger.e(fragment.getClass().getSimpleName(), fragment.isVisible()); 
       return fragment;//return current visible fragment to hide 
      } 
     } 
    } 
    return null; 
} 

その後、あなたのような何かを行う必要がありますfragmentToAddOrShow

+0

申し訳ありませんが、しかし、私がフラグメント1に戻るたびに、私のフラグメント1は可視性=可視であり、このmyfunctionに対しては、いつでも再スタートします。 – Helpme

0

hide()を使用するのではなく、hide毎回add()に行き、最初にadd()するだけで、何をしようとしているのかを記述して、いくつかのコードを表示してください。

+0

あなたは私に例を見せてもらえますか? – Helpme

関連する問題