アクティビティでタブフラグメントを使用していて、アクションバーがタブをホストしています。私がやりたいのは、(ユーザーが選択した)ビューにフラグメントが表示(または再表示)されるたびに、何かを開始することです。この場合、フラグメントのonResume
を使用することはできません。これは、ユーザーが別のタブを選択したときにすべてのタブが実際に「一時停止」されることはなく、onResume
が呼び出されないためです。
ホスティングアクティビティから次の2つのイベントを使用できますが、フラグメントがこのロジックを独自に認識してそのタスクを実行する必要があるため、これらのイベントは必要ありません。何か案が? tks。
@Override
public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
// When the given tab is selected, switch to the corresponding page in the ViewPager.
mViewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
}
説明されているように、フラグメントでsetUserVisibleHint()を試してください この回答では 。フラグメントが選択されたタブにある場合、setUserVisibleHint()はtrueで呼び出され、フラグメントが選択されたタブでない場合、setUserVisibleHint()はfalseで呼び出されます。これは、サポートライブラリを使用して私にとってはうまくいきます。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser)
Log.d("MyFragment", "Fragment is visible.");
else
Log.d("MyFragment", "Fragment is not visible.");
}
setUserVisibleHint(boolean isVisibleToUser)
またはonHiddenChanged (boolean hidden)
メソッドをオーバーライドできます。
setUserVisibleHint(boolean isVisibleToUser)
の場合、isVisibleToUser=true
フラグメントが表示されている場合、およびisVisibleToUser=false
フラグメントが非表示の場合。
onHiddenChanged (boolean hidden)
の場合、hidden:True
の場合
フラグメントが非表示になり、表示されていない場合はfalseになります。