Как получить кнопку из определенной вкладки в макете с вкладками - PullRequest
0 голосов
/ 25 сентября 2018

Я создал DynamicTabbedLayout и добавил 4 toogleButton к фрагменту, который я использую, но у меня возникла проблема, когда я не могу использовать onCheckedChanged (), потому что он изменяется для всех вкладок.

Я мог бы использовать переключатель, чтобы проверить вкладку, а затем установить onCheckedChanged (), но у меня слишком много вкладок.

Есть ли лучший способ получить onCheckedChange () для каждой вкладки?

Вот мой код:

MainActivity

public class MainActivity extends AppCompatActivity {

private ViewPager viewPager;
private TabLayout mTabLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_simulado);
    initViews();
}

private void initViews(){

    viewPager = findViewById(R.id.viewpager);
    mTabLayout =  findViewById(R.id.tabs);
    viewPager.setOffscreenPageLimit(5);
    viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(mTabLayout));
    mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
        @Override
        public void onTabSelected(TabLayout.Tab tab) {
            viewPager.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(TabLayout.Tab tab) {

        }

        @Override
        public void onTabReselected(TabLayout.Tab tab) {

        }
    });

    setDynamicFragmentToTabLayout();

}

private void setDynamicFragmentToTabLayout() {
    for (int i = 1; i <11 ; i++) {//listaQuestoes.size()+1

        mTabLayout.addTab(mTabLayout.newTab().setText("test " + i));
    }
    SimuladoFragmentAdapter mDynamicFragmentAdapter = new SimuladoFragmentAdapter(getSupportFragmentManager(), mTabLayout.getTabCount());
    viewPager.setAdapter(mDynamicFragmentAdapter);
    viewPager.setCurrentItem(0);


}

Фрагмент

 @Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    view = inflater.inflate(R.layout.simulado_fragment, container, false);
    initViews(view);
    toggleButton1 = view.findViewById(R.id.customToggleButton);
    toggleButton2 = view.findViewById(R.id.customToggleButton2);
    toggleButton3 = view.findViewById(R.id.customToggleButton3);
    toggleButton4 = view.findViewById(R.id.customToggleButton4);

    toggleButton1.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {


            Toast.makeText(getContext(), "Changed Test", Toast.LENGTH_SHORT).show();
        }
    });
    return view;
}

private void initViews(View view) {

    TextView textView=view.findViewById(R.id.textViewSimuladoFrag);
    textView.setText(String.valueOf("Category :  "+getArguments().getInt("position")));
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}

@Override
public void onAttach(Context context) {
    super.onAttach(context);
}

@Override
public void onPause() {
    super.onPause();
}

@Override
public void onResume() {
    super.onResume();
}

@Override
public void onStop() {
    super.onStop();
}

@Override
public void onDestroyView() {
    super.onDestroyView();
}

@Override
public void onDestroy() {
    super.onDestroy();
}
}

FragmentAdapter

private int mNumOfTabs;

public SimuladoFragmentAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

@Override
public Fragment getItem(int position) {
    Bundle b = new Bundle();
    b.putInt("position", position);
    Fragment frag = SimuladoFragment.newInstance();
    frag.setArguments(b);
    return frag;
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...