android - 用MapFragment替换ViewPager

时间:2016-04-19 09:00:30

标签: android android-viewpager fragment

我正在构建一个包含三个片段的活动,使用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);  

        }
    }

0 个答案:

没有答案