2017-04-24 86 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); 
    } 
}