-1

重複の可能性:
Android のアクティビティ間でデータを渡すにはどうすればよいですか?

質問

Yes,No,Difficult は が 3 つRadioButton、NEXT はButtonです。各画面の選択したラジオボタンのIDを最後の画面に渡す方法がわかりません。RESULT 画面では、特定の値が に表示されTextViewます。1 つの画面のコードを次に示します。

public class MainActivity extends Activity {
RadioGroup rg;
RadioButton rb;
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    addListenerOnButton();
}
private void addListenerOnButton() {
    rg = (RadioGroup) findViewById(R.id.rg_Ques1);
    b = (Button) findViewById(R.id.button1_ques1);
    b.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            int  selectedId = rg.getCheckedRadioButtonId();
            rb = (RadioButton) findViewById(selectedId);
            Intent i = new Intent(MainActivity.this,Ques2.class);
            startActivity(i);
            Toast.makeText(getApplicationContext(), rb.getText(), 0).show();
        }
    });
}
4

3 に答える 3

0

最初のクラスでは、インテントにエクストラを追加できます。

int  selectedId = rg.getCheckedRadioButtonId();
rb = (RadioButton) findViewById(selectedId);
Intent i = new Intent(MainActivity.this,Ques2.class);
i.putExtra("rb_value", rb.isChecked());
startActvity(i);

2 番目のクラスでは、渡したエクストラの値を取得できます。

this.getIntent().getExtras().getBoolean("rb_value");

質問 2 の質問 1 の結果が必要な場合は、これが最適な方法です。質問 2 の質問 1 の結果は必要ないが、結果のみが必要な場合は、調べることをお勧めしますSharedPreference(記憶から、いくつかの表現は正しくないが近いかもしれません)。

あなたの質問活動で:

SharedPreferences sharedPreferences = this.getSharedPreferences("my.app.preferences", 0);
SharedPreferences.Editor sharedPreferences_edit = sharedPreferences.edit();

sharedPreferences_edit.putBoolean("question1", true);
sharedPreferences_edit.commit();

リザルト アクティビティで:

SharedPreferences sharedPreferences = this.getSharedPreferences("my.app.preferences", 0);
sharedPreferences.getBoolean("question1");

このような質問をロードする場合、アプリをレイヤー化することになるため、新しいインテントをロードすることは最善の解決策ではありません...このようなものを作成していた場合、まったく新しいアクティビティで、ボタンを押すと、変数/sharedPreferences への応答を保存しながら、画面上の質問を変更するだけです。

于 2012-12-17T17:53:35.417 に答える
0

インテントを使用することも、設定に値を保存して、必要な場所にアクセスすることもできます。

于 2012-12-17T17:56:24.597 に答える
0

ここで私のアプローチは異なります。すべての質問に対して 1 つのアクティビティのみを作成します。質問をリストに保持し、「次へ」ボタンを押すと新しい質問をロードします。最後の質問が表示されたら、ボタンのテキストを「終了」に変更し、「終了」を押すと新しいアクティビティがバンドル内の正解の番号とともにロードされます。

于 2012-12-17T18:00:20.233 に答える