Dans une application Android, j'ai une activité qui contient un fragment.Développement Android comment éviter d'enregistrer le contexte avec un fragment et un menu d'options
Le fragment a une fonction "updateScore" qui a mis à jour l'interface utilisateur avec le score actuel.
Cette fonction est appelée à partir du fragment et doit également être appelée à partir d'un menu d'options qui réside dans l'activité. Ceci peut être réalisé si je sauvegarde le contexte en tant que variable statique dans le fragment, mais c'est une mauvaise pratique. Alors que dois-je faire à la place?
MainActivity:
public class MainActivity extends AppCompatActivity {
public static int totalCorrect;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
ExerciseFragment exerciseFragment = new ExerciseFragment();
fragmentTransaction.add(R.id.fragment_container, exerciseFragment);
fragmentTransaction.commit();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
int id = item.getItemId();
if (id == R.id.option_reset_score) {
totalCorrect = 0;
ExerciseFragment.updateScore();
}
}
}
ExerciseFragment:
public class ExerciseFragment extends Fragment {
private static View view; //bad practice
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_exercises, container, false);
ExerciseFragment.view = view;
updateScore();
return view;
}
public static void updateScore() {
TextView totalCorrectTextView = (TextView) view.findViewById(R.id.total_correct);
totalCorrectTextView.setText(MyApp.getAppContext().getString(R.string.correct) + ": " + String.valueOf(MainActivity.totalCorrect));
}
}
est ce que vous chargez un ExerciseFragment dans MainActivity ??? –
Connaissez-vous 'interface'? Vous pouvez appeler cette méthode avec une instance statique de fragment. – Piyush
s'il vous plaît poster votre morceau de code que vous chargez un fragment dans l'activité ?? –