簡體   English   中英

從創建它的活動中調用FragmentStatePagerAdapter中的片段中的方法

[英]Calling a method in a fragment in a FragmentStatePagerAdapter from the activity that created it

我有一個具有導航抽屜和Fragment狀態適配器的活動。 每當我單擊導航抽屜中的某個內容時,我都會通過界面將該信息傳遞給mainactivity,然后將該數據傳遞給Fragmentstateadapter中的主片段。 問題是,每當屏幕旋轉時,主片段都會出現空指針異常。

public class MainActivity extends ActionBarActivity implements RightDrawerRecyclerAdapter.Filters,
    LeftDrawerFragment.MenuSection,CommonAsyncTask.ServerData {
private static final String TAG = MainActivity.class.getSimpleName();
public MainFragment mMainFragment;
  @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ViewPager pager = (ViewPager) findViewById(R.id.pager);
    ScreenSlidePagerAdapter pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    pager.setAdapter(pagerAdapter);

}

   @Override
public void getMenuSelection(int selection) {
    Log.d(TAG,"getMenuSelection->"+selection);
        mMainFragment.getMenuSelection(selection);

}



private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {

    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
        Log.d(TAG, "in screenslide");
    }

    @Override
    public Fragment getItem(int position) {
        if (position == 0) {
            Log.d(TAG, "in returning MainFragment");
            mMainFragment=new MainFragment();
            return mMainFragment;
        } else {
            return new MapViewFragment();
        }
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        if (position == 0) {
            return "List";
        } else {
            return "Map";
        }
    }
}}

因此,getMenuSelection是導航抽屜中界面的方法。 然后我在MainFragment的主片段中有一個同名的方法,所以每當我在導航抽屜中選擇某個內容時,我都可以更改主片段中的內容,但是每當我打開屏幕時,都會創建一個新的MainFragment實例並getItem(int position)沒有被觸發,所以我的MainFragment對象為null,現在我無法將數據從導航抽屜傳遞給主片段。我試圖將MainFragment對象設置為靜態對象,這在MainFragment類中造成了問題。

因此,即使屏幕被轉動,我也如何找回相同的MainFragment對象。 還是有更好的方法在導航抽屜片段和FragmentState適配器中的片段之間傳遞數據

大家好,我通過接口通過onAttach將MainFragment的當前實例發送回MainActivity來解決了這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM