簡體   English   中英

Android ViewPager,從片段切換到另一個片段

[英]Android ViewPager, switching from fragment to another fragment

我有一個有2頁的viewpager,在每個片段上我放了一個按鈕來切換片段,但如果我改變方向切換不起作用。 使用我的OnChangePageButtonClick界面切換片段I為什么會發生這種情況?

ViewPager活動:

public class ViewPagerMusic extends FragmentActivity implements OnChangePageButtonClick {

    private ViewPager vp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_pager_music);

        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(super.getSupportFragmentManager(), fragments);

        vp = (ViewPager)findViewById(R.id.viewpager);
        vp.setAdapter(viewPagerAdapter);
    }

    private class ViewPagerAdapter extends FragmentStatePagerAdapter {

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

        @Override
    public Fragment getItem(int position) {
        switch(position) {
            case 0:
                MainPage mainPage = new MainPage();
                mainPage.setOnChengeButtonListener(ViewPagerMusic.this);
                return mainPage;
            case 1:
                PlaylistPage playlistPage = new PlaylistPage();
                playlistPage.setOnChengeButtonListener(ViewPagerMusic.this);
                return playlistPage;
        }
        return null;
    }

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

    }

    @Override
    public void selectPage(int page) {
        vp.setCurrentItem(page);        
    }

}

我的Frgamnets:

public class MainPage extends Fragment {

    public MainPage() {
        setRetainInstance(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.music_main_page, container, false);
        ImageButton btnPlaylist = (ImageButton)v.findViewById(R.id.btnGoPlaylist2);
        btnPlaylist.setOnClickListener(onButtonListener);
        return v;
    }

    private OnClickListener onButtonListener = new OnClickListener() {

        @Override
        public void onClick(View view) {
            onChangePageButtonClick.selectPage(1);
        }

    };

    public void setOnBackButtonListener(OnChangePageButtonClick onChangePageButtonClick) {
        this.onChangePageButtonClick = onChangePageButtonClick;
    }

    private OnChangePageButtonClick onChangePageButtonClick;

}

播放列表片段類似於MainPage片段。

您的片段正在存儲對ViewPagerMusic活動的引用。 但是,在輪換之后,活動將被銷毀並重新創建,因此片段現在包含對舊活動的引用。

您可以從片段中調用活動的方法,而不是存儲對活動的引用,如下所示:

((ViewPagerMusic) getActivity()).selectPage(1);

只需在視圖尋呼機中創建此方法即可

@覆蓋

public void selectPage(int page) {
    vp.setCurrentItem(page);        
}

然后在你的onclick方法中調用它

((ViewPagerMusic)getActivity())。selectPage(1);

暫無
暫無

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

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