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();
    }
}
0
Rohan Sharma 24 Апр 2017 в 15:18

2 ответа

Лучший ответ

Вам нужно использовать адаптер для переключения между фрагментами. Кроме того, в вашем адаптере необходимо указать регистр переключения для выбора соответствующих фрагментов на основе выбранных вкладок.

Посмотри на это!

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

0
Shreyansh 24 Апр 2017 в 12:33

Поскольку вы устанавливаете этот единственный фрагмент, вы должны использовать регистр переключения или условие 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);
    }
}
0
Pang 24 Июн 2017 в 01:40