简而言之,我正在制作一个简单的症状检查程序,使一般用户可以回答是/否问题。我是Android Studio的新手(仅编写了不到一周的时间),并尝试使移动应用程序保存单选按钮的状态,因此,如果用户回溯页面,则会显示选中的单选按钮。我将每个问题的是和否单选按钮分组到单独的单选组中,以便在每个问题下选择是或否。
不幸的是,即使进入下一个问题页面,按钮也保持未选中状态。无论如何,我编写的代码可以轻松地放入意图或共享首选项中吗?
问题活动XML代码,以显示单选按钮的分组方式:
<RadioGroup
android:id="@+id/radioGroup"
android:layout_width="214dp"
android:layout_height="59dp"
android:layout_marginTop="124dp"
app:layout_constraintStart_toStartOf="@+id/textView2"
app:layout_constraintTop_toTopOf="parent">
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Yes"
app:layout_constraintTop_toTopOf="parent"
tools:layout_conversion_absoluteHeight="32dp"
tools:layout_conversion_absoluteWidth="55dp"
tools:layout_editor_absoluteX="18dp"
tools:layout_editor_absoluteY="134dp" />
<RadioButton
android:id="@+id/radioButton20"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No"
app:layout_constraintTop_toTopOf="parent"
tools:layout_conversion_absoluteHeight="32dp"
tools:layout_conversion_absoluteWidth="50dp"
tools:layout_editor_absoluteX="18dp"
tools:layout_editor_absoluteY="300dp" />
</RadioGroup>
这是链接到Questions活动的“ Questions” java文件:
public class Questions extends AppCompatActivity {
private RadioButton radioButton;
private RadioButton radioButton2;
private RadioButton radioButton3;
private RadioButton radioButton4;
private RadioButton radioButton5;
private RadioButton radioButton6;
private RadioButton radioButton7;
private RadioButton radioButton8;
private RadioButton radioButton9;
private RadioButton radioButton10;
private RadioButton radioButton11;
private RadioButton radioButton12;
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
//Question 1
radioButton = findViewById(R.id.radioButton); //yes
radioButton2 = findViewById(R.id.radioButton20); //no
//Question 2
radioButton3 = findViewById(R.id.radioButton4); //yes
radioButton4 = findViewById(R.id.radioButton2); //no
//Question 3
radioButton5 = findViewById(R.id.radioButton6); //yes
radioButton6 = findViewById(R.id.radioButton5); //no
//Question 4
radioButton7 = findViewById(R.id.radioButton7); //yes
radioButton8 = findViewById(R.id.radioButton8); //no
//Question 5
radioButton9 = findViewById(R.id.radioButton9); //yes
radioButton10 = findViewById(R.id.radioButton10); //no
//Question 6
radioButton11 = findViewById(R.id.radioButton12); //yes
radioButton12 = findViewById(R.id.radioButton11); //no
savedInstanceState.putBoolean("myOption1", radioButton.isChecked());
savedInstanceState.putBoolean("myOption2", radioButton2.isChecked());
savedInstanceState.putBoolean("myOption3", radioButton3.isChecked());
savedInstanceState.putBoolean("myOption4", radioButton4.isChecked());
savedInstanceState.putBoolean("myOption5", radioButton5.isChecked());
savedInstanceState.putBoolean("myOption6", radioButton6.isChecked());
savedInstanceState.putBoolean("myOption7", radioButton7.isChecked());
savedInstanceState.putBoolean("myOption8", radioButton8.isChecked());
savedInstanceState.putBoolean("myOption9", radioButton9.isChecked());
savedInstanceState.putBoolean("myOption10", radioButton10.isChecked());
savedInstanceState.putBoolean("myOption11", radioButton11.isChecked());
savedInstanceState.putBoolean("myOption12", radioButton12.isChecked());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
radioButton.setChecked(savedInstanceState.getBoolean("myOption1"));
radioButton2.setChecked(savedInstanceState.getBoolean("myOption2"));
radioButton3.setChecked(savedInstanceState.getBoolean("myOption3"));
radioButton4.setChecked(savedInstanceState.getBoolean("myOption4"));
radioButton5.setChecked(savedInstanceState.getBoolean("myOption5"));
radioButton6.setChecked(savedInstanceState.getBoolean("myOption6"));
radioButton7.setChecked(savedInstanceState.getBoolean("myOption7"));
radioButton8.setChecked(savedInstanceState.getBoolean("myOption8"));
radioButton9.setChecked(savedInstanceState.getBoolean("myOption9"));
radioButton10.setChecked(savedInstanceState.getBoolean("myOption10"));
radioButton11.setChecked(savedInstanceState.getBoolean("myOption11"));
radioButton12.setChecked(savedInstanceState.getBoolean("myOption12"));
}
}
该解决方案的最终目标是利用所有选中的单选按钮框,做出一个大的'if then'语句,以进行患者症状诊断。
深入了解实现非常有用,谢谢。
这是@JakeB的整个课程:
package com.example.mhtapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RadioButton;
public class Questions extends AppCompatActivity {
private Button button2;
private RadioButton radioButton;
private RadioButton radioButton2;
private RadioButton radioButton3;
private RadioButton radioButton4;
private RadioButton radioButton5;
private RadioButton radioButton6;
private RadioButton radioButton7;
private RadioButton radioButton8;
private RadioButton radioButton9;
private RadioButton radioButton10;
private RadioButton radioButton11;
private RadioButton radioButton12;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_questions);
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openquestion2();
}
});
//Question 1
radioButton = findViewById(R.id.radioButton); //yes
radioButton2 = findViewById(R.id.radioButton20); //no
//Question 2
radioButton3 = findViewById(R.id.radioButton4); //yes
radioButton4 = findViewById(R.id.radioButton2); //no
//Question 3
radioButton5 = findViewById(R.id.radioButton6); //yes
radioButton6 = findViewById(R.id.radioButton5); //no
//Question 4
radioButton7 = findViewById(R.id.radioButton7); //yes
radioButton8 = findViewById(R.id.radioButton8); //no
//Question 5
radioButton9 = findViewById(R.id.radioButton9); //yes
radioButton10 = findViewById(R.id.radioButton10); //no
//Question 6
radioButton11 = findViewById(R.id.radioButton12); //yes
radioButton12 = findViewById(R.id.radioButton11); //no
}
public void openquestion2() {
Intent intent = new Intent(this, Question2.class);
startActivity(intent);
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putBoolean("myOption1", radioButton.isChecked());
savedInstanceState.putBoolean("myOption2", radioButton2.isChecked());
savedInstanceState.putBoolean("myOption3", radioButton3.isChecked());
savedInstanceState.putBoolean("myOption4", radioButton4.isChecked());
savedInstanceState.putBoolean("myOption5", radioButton5.isChecked());
savedInstanceState.putBoolean("myOption6", radioButton6.isChecked());
savedInstanceState.putBoolean("myOption7", radioButton7.isChecked());
savedInstanceState.putBoolean("myOption8", radioButton8.isChecked());
savedInstanceState.putBoolean("myOption9", radioButton9.isChecked());
savedInstanceState.putBoolean("myOption10", radioButton10.isChecked());
savedInstanceState.putBoolean("myOption11", radioButton11.isChecked());
savedInstanceState.putBoolean("myOption12", radioButton12.isChecked());
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
radioButton.setChecked(savedInstanceState.getBoolean("myOption1"));
radioButton2.setChecked(savedInstanceState.getBoolean("myOption2"));
radioButton3.setChecked(savedInstanceState.getBoolean("myOption3"));
radioButton4.setChecked(savedInstanceState.getBoolean("myOption4"));
radioButton5.setChecked(savedInstanceState.getBoolean("myOption5"));
radioButton6.setChecked(savedInstanceState.getBoolean("myOption6"));
radioButton7.setChecked(savedInstanceState.getBoolean("myOption7"));
radioButton8.setChecked(savedInstanceState.getBoolean("myOption8"));
radioButton9.setChecked(savedInstanceState.getBoolean("myOption9"));
radioButton10.setChecked(savedInstanceState.getBoolean("myOption10"));
radioButton11.setChecked(savedInstanceState.getBoolean("myOption11"));
radioButton12.setChecked(savedInstanceState.getBoolean("myOption12"));
}
}
答案 0 :(得分:2)
当您导航回到上一个活动时,它可能会生成一个新的活动而不是重新使用旧的活动,请将清单中的活动启动模式设置为“ singleInstance”。
42P07