Android 如何替换ViewPager中的片段
我在这个问题上纠结了几天,快把我逼疯了。看起来我正在尝试做的是一个非常常见的用例,但我一辈子都想不出来 因此,问题是:我想替换ViewPager中的片段,并保持Backback的正常操作 我的ViewPager包含两个显示ListView的片段。当处于ViewPager的第一个位置时,我希望能够深入查看ListView,并能够使用后退按钮后退,如下所示: 艺术家->专辑->歌曲Android 如何替换ViewPager中的片段,android,listview,android-viewpager,fragment,Android,Listview,Android Viewpager,Fragment,我在这个问题上纠结了几天,快把我逼疯了。看起来我正在尝试做的是一个非常常见的用例,但我一辈子都想不出来 因此,问题是:我想替换ViewPager中的片段,并保持Backback的正常操作 我的ViewPager包含两个显示ListView的片段。当处于ViewPager的第一个位置时,我希望能够深入查看ListView,并能够使用后退按钮后退,如下所示: 艺术家->专辑->歌曲 艺术家您可以通过覆盖活动中的onBackPressed方法来管理“backbackback”,并跟踪用户当前处于哪个级
艺术家您可以通过覆盖活动中的
onBackPressed
方法来管理“backbackback”,并跟踪用户当前处于哪个级别,并根据需要显示或返回活动
@Override
public void onBackPressed(){
if (mLevel > 1) {
// in your case probably change the adapter item for the page
mViewPagerAdapter.notifyDataSetChanged()
}
...
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Artist artist = (Artist) adapter.getItem(position);
itemSelectedListener.onItemSelected(artist);
}
public class ListPagerAdapter extends FragmentPagerAdapter {
SearchView searchView;
BrowserFragment browserFragment;
PlaylistFragment playlistFragment;
public ListPagerAdapter(SearchView searchView, FragmentManager fm) {
super(fm);
this.searchView = searchView;
}
public boolean browserFragmentCanGoBack() {
return browserFragment.canGoBack();
}
public void browserFragmentBack() {
browserFragment.goBack();
}
@Override
public Fragment getItem(int position) {
if (position == 1) {
if (playlistFragment == null) {
playlistFragment = new PlaylistFragment(searchView);
}
return playlistFragment;
} else {
if (browserFragment == null) {
browserFragment = new BrowserFragment(searchView);
}
return browserFragment;
}
}
@Override
public int getCount() {
return 2;
}
}
@Override
public void onBackPressed() {
if (viewPager.getCurrentItem() == 0) {
if (pagerAdapter.browserFragmentCanGoBack()) {
pagerAdapter.browserFragmentBack();
} else {
super.onBackPressed();
}
} else {
viewPager.setCurrentItem(viewPager.getCurrentItem() - 1);
}
}
@Override
public void onBackPressed(){
if (mLevel > 1) {
// in your case probably change the adapter item for the page
mViewPagerAdapter.notifyDataSetChanged()
}
...
}