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

私はアンドロイドのアプリケーション開発で新しく、なぜフラグメントがすべてのタブで表示されるのかわかりません。以前はテキストビューのみだったので、各タブの下に特定のテキストが表示され、アプリケーションが機能しましたが、この新しいコードを追加すると、すべてのタブでフラグメントが表示されます。フラグメントは、表示されるべきではなく、すべてのタブで表示されます。

編集:

アダプターコード:あなたはその断片のみを設定しているので、あなたはスイッチケースまたは場合、条件を使用して、各タブのIDを取り、perticularタブで設定する必要が

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

あなたはフラグメントを切り替えるために特殊なアダプタを使用する必要があります。 また、アダプタでは、選択したタブに基づいて適切なフラグメントを選択するためのスイッチケースを用意する必要があります。

これをご覧ください。

https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html

+0

が追加され、アダプタコードが追加されました。 –

0

。ただ、このような

は:

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); 
    } 
} 
関連する問題