5

フラグメントがアクティブなフラグメントであるときに特定の関数を常に呼び出す必要があるため、onResume() に入れましたが、呼び出されていません。

フラグメントA

@Override
public  void onResume(){
    super.onResume();
    Log.d("clear state", " "+clear);
    if(clear == true)
    {
        restart();
        clear = false;
        calculate();
    }
}

ViewPager で FragmentPagerAdapter を使用してフラグメントを切り替えます

public class ScoutingFragSingle extends FragmentPagerAdapter{


@Override
public Fragment getItem(int index) {
    Bundle data = new Bundle();
    switch(index){
    case 0:
        TeamsFragment teamsFragment = new TeamsFragment();
        data.putInt("current_page", index+1);
        teamsFragment.setArguments(data);
        return teamsFragment;
    case 1:

        data.putInt("current_page", index+1);
        data.putInt("matchId", matchNum);
        aFragment.setArguments(data);
        return aFragment;

では、フラグメントに onResume() を呼び出させるにはどうすればよいでしょうか?

4

2 に答える 2

6

私は少し前に同じ問題を抱えていました。

新しいインターフェイスを作成し、両方で実装しますFragment

public interface OnPageSelectedListener {
    void onPageSelected();
}

親アクティビティでは、次のようにメソッドを実装android.support.v4.view.ViewPager.OnPageChangeListenerして呼び出します。Fragment

@Override
public void onPageSelected(int i) {
    OnPageSelectedListener fragment = (OnPageSelectedListener ((PlaceListPagerAdapter)pager.getAdapter()).getFragment(i);
    fragment.onPageSelected();
}

PS: 新しいインターフェイスの名前とそのメソッドは少しわかりにくいので、注意するか変更してください。

于 2013-07-29T16:34:30.403 に答える
3

Fragment.setUserVisibleHintをオーバーライドします。setUserVisibleHintで使用するのと同じロジックをいつtrue呼び出すかonResume

instantiateItemsetPrimaryItemFragmentPagerAdapterで呼び出さsetUserVisibleHintれるタイミングを確認できます。Android 4.2.1 以降およびsupport-v4に適用されます。

于 2016-03-02T14:37:16.440 に答える