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 и не могу понять, почему фрагмент просматривается на всех вкладках. Ранее, когда это был только просмотр текста, приложение показывало определенный текст под каждой вкладкой, и приложение работало, но добавление этого нового кода каким-то образом заставляло фрагмент просматриваться на всех вкладках.
Редактировать:
Код адаптера:
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();
}
}
2 ответа
Вам нужно использовать адаптер для переключения между фрагментами. Кроме того, в вашем адаптере необходимо указать регистр переключения для выбора соответствующих фрагментов на основе выбранных вкладок.
Посмотри на это!
https://developer.android.com/reference/android/support/v4/app/FragmentPagerAdapter.html
Поскольку вы устанавливаете этот единственный фрагмент, вы должны использовать регистр переключения или условие if и взять Id каждой вкладки и установить на вкладке perticular.
Именно так:
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);
}
}
Новые вопросы
android
Android - это мобильная операционная система Google, используемая для программирования или разработки цифровых устройств (смартфоны, планшеты, автомобили, телевизоры, одежда, стекло, IoT). Для тем, связанных с Android, используйте специальные теги Android, такие как android-intent, android-activity, android-адаптер и т. Д. Для вопросов, не связанных с разработкой или программированием, но связанных с платформой Android, используйте эту ссылку: https: // android.stackexchange.com .