我正在构建一个包含三个片段的活动,使用ViewPager
和Tabs。
1 - 位置列表--->点击应替换为地图片段
2 - 列出最喜欢的位置
3 - 地图
我的问题是,当我点击列表中的位置时,ViewPager
和标签不会被替换。
我已经尝试pager.setVisibility(View.GONE)
并且MapFragment
加载正常,但是点击后退 - 应用停止
我很感激有关它的帮助,
谢谢大家!
这是代码的onCreate部分:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
View containerMap = findViewById(R.id.container_map);
fragAdapter = new FragmentAdapter(getSupportFragmentManager());
pager = (ViewPager) findViewById(R.id.viewPager);
pager.setAdapter(fragAdapter);
pager.setCurrentItem(1);
PreferenceManager.getDefaultSharedPreferences(this).edit().putBoolean(getResources().getString(R.string.is_search_fragment), true).apply();
TabLayout tabs = (TabLayout) findViewById(R.id.tabs);
tabs.setupWithViewPager(pager);
tabs.setSelectedTabIndicatorColor(getResources().getColor(R.color.colorAccent));
tabs.setTabTextColors(Color.BLACK, Color.WHITE);
tabs.setOnTabSelectedListener(this);
if (containerMap != null) {
isTablet = true;
getSupportFragmentManager().beginTransaction()
.replace(R.id.container_map, new MapFragment(), MapFragment.TAG)
.commit();
} else {
isTablet = false;
}
}
这是与MainActivity相关的代码部分:
@Override
public void onLocationSelected(LocationClass location) {
if (isTablet) {
((MapFragment) getSupportFragmentManager().findFragmentByTag(MapFragment.TAG)).showLocationSelected(location);
} else {
MapFragment fragment = new MapFragment();
Bundle b = new Bundle();
b.putSerializable(MAP_KEY, location);
fragment.setArguments(b);
getSupportFragmentManager().beginTransaction().replace(R.id.container_list, fragment, MapFragment.TAG)
.addToBackStack(MapFragment.TAG).commit();
pager.setVisibility(View.GONE);
}
}