تحديد الوظائف عدة مرات عند استخدام setContentView
-
21-12-2019 - |
سؤال
أنا جديد تمامًا في مجال تطوير Java وAndroid وأحاول إنشاء "اختبار" صغير يتضمن ذلك RadioButton
التحديدات في كل عرض بالإضافة إلى زر التالي والرجوع.أقوم بتشغيل الزرين التالي والخلفي ولكن يبدو أنها طريقة طويلة جدًا للقيام بذلك.هل هناك طريقة يمكنني من خلالها تحديد وظيفة مرة واحدة وجعلها تعمل في هذا التخطيط دون الحاجة إلى إعادة تعريفها في كل مرة أستخدم فيها زر الرجوع.أي.أملك nexButtonGPAbuttonClick()
المحددة في onCreate
ولكن عندما أصل إلى ذلك activity_main_2_.xml
واضبط زر الرجوع على setContentView(activty_main.xml)
, ، لا بد لي من إعادة تعريف ذلك nextButtonGPAbuttonClick();
مرة أخرى في ذلك setContentView(R.layout.activity_main)
.هنا ملف جافا الخاص بي.أي توجيه سيكون مفيدا للغاية.
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;
}
}
المحلول
ابدأ نشاطًا جديدًا بدلاً من استدعاء setContentView.وبهذه الطريقة، سيعيد زر الرجوع المستخدم تلقائيًا إلى الشاشة السابقة.