簡體   English   中英

使用 Intent 而不是“saveInstance”保存多個單選按鈕狀態

[英]Save multiple radio buttons state using an Intent instead of 'saveInstance'

簡而言之,我正在制作一個簡單的症狀檢查器,它允許一般用戶回答是/否問題。 我對 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>

這是鏈接到問題活動的“問題”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"));

    }
}

解決方案的最終目標是利用所有選中的單選按鈕框,制作一個大的“如果然后”語句,這將允許患者症狀診斷。

對實施的見解將非常有用,謝謝。

這是整個班級@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"));

   }
} 

當您導航回上一個活動時,它可能會生成一個新活動而不是重用舊活動,請將清單中的活動啟動模式設置為“singleInstance”。

<activity
    android:name=".Questions"
    android:launchMode="singleInstance">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM