Ich hatte einen FragmentPagerAdapter erstellt, um viele Fragen mit demselben Fragment anzuzeigen.Zustand des Fragments mit FragmentPagerAdapter speichern
Dies ist das Fragment:
Wenn Antwort geben und zu validieren, ich deaktivieren Taste und EditText. Aber wenn ich zwei Fragmente gleiten lasse und zurückkomme, sind EditText und Button nicht mehr deaktiviert und der Benutzer kann den Wert des Bearbeitungstextes ändern.
Dies ist FragmentPagerAdapter:
/**
* A simple {@link Fragment} subclass.
*/
public class PlayFragment extends FragmentPagerAdapter {
//--Jouer un circuit
private static Game currentGame = null; //La partie courante
public static Circuit circ;
private static List<QuestionReponse> questionsReponses = new ArrayList<>();
private int PAGE_COUNT;
private static ArrayList<String> listTitles = new ArrayList<>();
public PlayFragment(FragmentManager fm) {
super(fm);
this.listTitles = new ArrayList<>();
for (int i = 0; i < currentGame.getDifficulties().size(); i++) {
this.listTitles.add(currentGame.getDifficulties().get(i).getName()); //Les difficultées choisis
}
this.PAGE_COUNT = currentGame.getDifficulties().size();
}
@Override
public int getCount() {
return PAGE_COUNT;
}
@Override
public Fragment getItem(int position) {
return QuestionFragment.newInstance(position + 1);
}
@Override
public CharSequence getPageTitle(int position) {
// Generate title based on item position
return listTitles.get(position);
}
public static Game getCurrentGame() {
return currentGame;
}
public static void setCurrentGame(Game currentGame) {
PlayFragment.currentGame = currentGame;
}
public static ArrayList<String> getListTitles() {
return listTitles;
}
public static void setListTitles(ArrayList<String> listTitles) {
PlayFragment.listTitles = listTitles;
}
}
Dies ist StartGameFragment:
/**
* A simple {@link Fragment} subclass.
*/
public class StartGameFragment extends Fragment implements AsyncResponse {
PlayFragment playFragment;
public StartGameFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
((MainActivity) getActivity()).changeActionBarTitle(getString(R.string.nav_circuit_dl));
MenuItem item = ((MainActivity) getActivity()).navigationView.getMenu().findItem(R.id.nav_dl_circuit);
if (item != null) item.setChecked(true);
//Allow to modify ActionBar menu in this fragment
setHasOptionsMenu(true);
//new JSONGetter().execute("");
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_start_game, container, false);
ViewPager viewPager = (ViewPager) v.findViewById(R.id.viewpager);
this.playFragment = new PlayFragment(getActivity().getSupportFragmentManager());
viewPager.setAdapter(playFragment);
// Give the TabLayout the ViewPager
TabLayout tabLayout = (TabLayout) v.findViewById(R.id.sliding_tabs);
tabLayout.setupWithViewPager(viewPager);
return v;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
}
@Override
public void onDestroyView() {
MenuItem item = ((MainActivity) getActivity()).navigationView.getMenu().findItem(R.id.nav_dl_circuit);
if (item != null) item.setChecked(false);
super.onDestroyView();
}
@Override
public void onTaskDBCompleted(String result, Object entity, String method) {
}
@Override
public void onTaskCompleted(String result, String method) {
}
}
Und schließlich QuestionFragment (I zeigen nicht alle, weil zu viel Code in diesem Fragment):
/**
* A simple {@link Fragment} subclass.
*/
public class QuestionFragment extends Fragment implements AsyncResponse {
public QuestionFragment() {
// Required empty public constructor
}
public static QuestionFragment newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
QuestionFragment fragment = new QuestionFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPage = getArguments().getInt(ARG_PAGE);
}
}
Ich versuchte mit this solution, aber das funktioniert nicht für mich!
Warum funktioniert es nicht für Sie? Wie haben Sie es umgesetzt? Gib uns etwas Code. – Sevle
Ich bearbeitete meine Frage :) – Eraseth