Funktionen mehrfach definieren, wenn setContentView verwendet wird
-
21-12-2019 - |
Frage
Ich bin ein absoluter Neuling in der Java- und Android-Entwicklung und versuche, ein kleines „Quiz“ zu erstellen RadioButton
Auswahlmöglichkeiten in jeder Ansicht sowie eine Weiter- und Zurück-Schaltfläche.Ich bekomme die Schaltflächen „Weiter“ und „Zurück“ zum Laufen, aber das scheint mir eine sehr umständliche Vorgehensweise zu sein.Gibt es eine Möglichkeit, eine Funktion einmal zu definieren und sie in diesem Layout zum Laufen zu bringen, ohne sie jedes Mal neu definieren zu müssen, wenn ich die Zurück-Schaltfläche verwende?D.h.Ich habe nexButtonGPAbuttonClick()
definiert in der onCreate
aber wenn ich dazu komme activity_main_2_.xml
und stellen Sie die Zurück-Taste auf setContentView(activty_main.xml)
, das muss ich neu definieren nextButtonGPAbuttonClick();
noch einmal darin setContentView(R.layout.activity_main)
.Hier ist meine .java-Datei.Jede Anleitung wäre äußerst hilfreich.
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;
}
}
Lösung
Starten Sie eine neue Aktivität, anstatt setContentView aufzurufen.Auf diese Weise führt die Zurück-Schaltfläche den Benutzer automatisch zum vorherigen Bildschirm zurück.