2017-04-24 80 views
0
package com.beacons.railwayaid.raid; 


import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentTransaction; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import com.customlbs.library.IndoorsFactory; 
import com.customlbs.surface.library.IndoorsSurfaceFactory; 
import com.customlbs.surface.library.IndoorsSurfaceFragment; 

public class Navigation extends Fragment{ 



@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup  container, @Nullable Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.navigation_layout, container, false); 

    IndoorsFactory.Builder indoorsBuilder = new IndoorsFactory.Builder(); 
    IndoorsSurfaceFactory.Builder surfaceBuilder = new IndoorsSurfaceFactory.Builder(); 

    indoorsBuilder.setContext(getContext()); 

    indoorsBuilder.setApiKey("69af5e85-007a-4df5-8715-d1c2c22e206f"); 



    indoorsBuilder.setBuildingId((long) 979231679); 

    surfaceBuilder.setIndoorsBuilder(indoorsBuilder); 

    IndoorsSurfaceFragment indoorsFragment = surfaceBuilder.build(); 

    FragmentTransaction transaction = getFragmentManager().beginTransaction(); 
    transaction.replace(android.R.id.tabcontent, indoorsFragment, "indoors"); 
    transaction.commit(); 


    return v; 
    } 
} 

我是android应用程序开发的新成员,我无法弄清楚为什么片段在所有选项卡下都被查看。以前,当它只是textview时,应用程序会在每个选项卡下显示特定的文本,并且应用程序可以正常工作,但以某种方式添加此新代码会导致在所有选项卡下查看片段。在所有选项卡下查看片段,而不是仅查看其中应该查看的片段

编辑:

适配器代码:

package com.beacons.railwayaid.raid; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentPagerAdapter; 

import java.util.List; 



public class PagerAdapter extends FragmentPagerAdapter { 

List<Fragment> listFragments; 

public PagerAdapter(FragmentManager fm, List<Fragment> listFragments){ 
    super(fm); 
    this.listFragments = listFragments; 
} 

@Override 
public Fragment getItem(int position) { 
    return listFragments.get(position); 
} 

@Override 
public int getCount() { 
    return listFragments.size(); 
    } 
} 
+0

您的适配器代码在哪里? – Wizard

+0

添加了适配器代码@Wizard –

回答

0

由于设置仅片段,必须使用开关壳体,或者如果条件并采取每个选项卡的Id和在所述特定的标签设置。

就像这样:

private void setupViewPager(ViewPager viewPager) { 

    FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); 

    ViewPagerAdapter adapter = new ViewPagerAdapter(fragmentManager); 

     if (role == 1) { 
      adapter.addFragment(new MyDetailsB(), "My Details"); 
      adapter.addFragment(new Biography(), "Biography"); 
      viewPager.setAdapter(adapter); 
     } 
    } 
    if (st == 1) { 
     adapter.addFragment(new MyDetailsB(), "My Details"); 
     adapter.addFragment(new Biography(), "Biography"); 
     viewPager.setAdapter(adapter); 
    } 
} 

private static class ViewPagerAdapter extends FragmentStatePagerAdapter { 
    private final List<android.support.v4.app.Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    private ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public android.support.v4.app.Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    private void addFragment(android.support.v4.app.Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
}