Définir des fonctions plusieurs fois lors de l'utilisation de setContentView
-
21-12-2019 - |
Question
Je suis extrêmement nouveau dans le développement Java et Android et j'essaie de créer un petit "Quiz" qui a RadioButton
sélections sur chaque vue ainsi qu'un bouton suivant et retour.Je fais fonctionner les boutons suivant et précédent, mais cela semble être une façon très longue de le faire.Existe-t-il un moyen de définir une fonction une fois et de la faire fonctionner dans cette disposition sans avoir à la redéfinir à chaque fois que j'utilise le bouton Précédent.C'est à dire.J'ai nexButtonGPAbuttonClick()
défini dans le onCreate
mais quand j'arrive activity_main_2_.xml
et réglez le bouton de retour sur setContentView(activty_main.xml)
, je dois redéfinir cela nextButtonGPAbuttonClick();
encore une fois dans ce setContentView(R.layout.activity_main)
.Voici mon fichier .java.Toute orientation serait extrêmement utile.
package com.example.studentadvisorapp;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nextButtonGPAbuttonClick();
}
private void nextButtonGPAbuttonClick() {
//Get reference to button
Button nextButtonGPA = (Button) findViewById(R.id.next_button_gpa);
//set click listener
nextButtonGPA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_main_2);
prevButtonHoursEnrolledbuttonClick();
nextButtonHoursEnrolledbuttonClick();
}
private void prevButtonHoursEnrolledbuttonClick() {
//Get reference to button
Button prevButtonHoursEnrolled = (Button) findViewById(R.id.prev_button_hours_enrolled);
//set click listener
prevButtonHoursEnrolled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_main);
nextButtonGPAbuttonClick();
}
});
}
private void nextButtonHoursEnrolledbuttonClick() {
//Get reference to button
Button nextButtonHoursEnrolled = (Button) findViewById(R.id.next_button_hours_enrolled);
//set click listener
nextButtonHoursEnrolled.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setContentView(R.layout.activity_main_3);
nextButtonHoursWorkingbuttonClick();
prevButtonHoursWorkingbuttonClick();
}
private void nextButtonHoursWorkingbuttonClick() {
//Get reference to button
Button nextButtonHoursWorking = (Button) findViewById(R.id.next_button_hours_working);
//set click listener
nextButtonHoursWorking.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { setContentView(R.layout.activity_main_4);
}
});
}
private void prevButtonHoursWorkingbuttonClick() {
//Get reference to button
Button nextButtonHoursWorking = (Button) findViewById(R.id.prev_button_hours_working);
//set click listener
nextButtonHoursWorking.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { setContentView(R.layout.activity_main_2); prevButtonHoursEnrolledbuttonClick(); nextButtonHoursEnrolledbuttonClick();
}
});
}
});
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
La solution
Démarrez une nouvelle activité au lieu d'appeler setContentView.De cette façon, le bouton de retour ramènera automatiquement l'utilisateur à l'écran précédent.