0

クイズアプリやってます。50 の質問を設定しました。各質問には、前と次のボタンが付いた 4 つのオプション (ラジオ グループ) が含まれています。私が必要とするのは、答えを選択して次の質問に進み、再び前の質問に戻ったときに、以前に選択した答えが選択された状態である必要があることです。しかし、ユーザーが選択した値は getText() これを実装する方法は? 誰でも私を助けて..

前もって感謝します..

ImageView previousbtn1 = (ImageView) findViewById(R.id.prv_btn);
        previousbtn1.setOnClickListener(new Button.OnClickListener()
        {
            public void onClick(View v)
            {
                if ( j < 1 )
                {
                    Toast.makeText(Question.this, "First Question", Toast.LENGTH_SHORT).show();
                }
                else
                {
                    --j;
                    --num;
                    --m;
                    TextView txtque = (TextView) findViewById(R.id.que_txt);
                    txtque.setText("Q" + num + ")" + ques1.get(j));
                    --k;
                    btn_practice1.setText(answ1.get((k * 4) + 0));
                    btn_practice2.setText(answ1.get((k * 4) + 1));
                    btn_practice3.setText(answ1.get((k * 4) + 2));
                    btn_practice4.setText(answ1.get((k * 4) + 3));
                }
            }
        });
4

2 に答える 2

1

ユーザーがアプリケーションを再インストールする (データをクリアする) まで、値を永久に保存する SharedPreferences を使用します。共有設定は次のように機能します

// save string in sharedPreferences
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
                    SharedPreferences.Editor editor = settings.edit();
                    editor.putString("some_key", string); // here string is the value you want to save
                    editor.commit();                    

// restore string in sharedPreferences 
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
string = settings.getString("some_key", "");
于 2013-04-11T12:06:46.843 に答える
1

基本的に、あなたの問題はラジオボタンをアクティブにする方法ではなく、コンセプト全体であるように見えるので、私はそれをどのように行うかを説明します:

簡単な方法

任意の種類のリストまたはマップを使用します (キーが質問番号で、値が回答値 (1、2、または 3 - 単純な整数) であるハッシュマップが望ましい)。次に、たとえば質問2にいるとき、キー2のエントリがすでにあるかどうかを確認し、ある場合は値を読み上げて対応するラジオボタンをアクティブにします(ちなみにこれは で行われますradio1.setChecked(true))-そうでない場合ユーザーがラジオ ボタンをクリックするとすぐに、anser がハッシュ マップに格納されます。

おそらくより良い方法:)

前とほぼ同じですが、回答として単純な「int」の代わりに、回答にオブジェクトを使用します(おそらく質問にも回答を質問に直接保存できます)-回答/質問が単純な「1、2、または 3」よりも複雑です。

サイドノート

アプリを閉じた後にユーザーの回答を利用できるようにする必要がある場合は、それらをsqlite dbまたは共有設定に保存する必要があります。これらの anser は実際には SharedPreferences/Settings ではないため、これには sqlite の方が適していると思いますが、もう少し努力が必要です。


あなたがそれを求めるので:

switch(answer){
    case 1:
        radio1.setChecked(true)
    break;
    case 2:
        radio2.setChecked(true)
    break;
    case 3:
        radio3.setChecked(true)
    break;
    default:
    break;
}
于 2013-04-11T12:03:17.303 に答える