2

ボタンをクリックすると、5 つのラジオ ボタンを持つポップアップ ダイアログが表示されます。今の要件は

  1. ボタンを起動してクリックすると、ポップアップダイアログが最初に表示され、最初のラジオボタンはチェックされた状態になり、他のボタンはチェックされていない状態になります。
  2. ユーザーが次のラジオボタンを選択して変更すると、ダイアログが閉じられ、ユーザーがポップアップ手段を開くと、以前に選択された状態になります。

これをどのように進めますか?

コードは次のとおりです。

public class PopUpDialogRadioButton extends Activity {
    private Button popUpClick;
    private Dialog dialog;
    private RadioGroup radioGroup;
    private RadioButton radioButton1, radioButton2, radioButton3, radioButton4, radioButton5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.sortfilterclick);
    popUpClick = (Button) findViewById(R.id.popupButton); // on click of button, opens a pop up dialog
    popUpClick.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            dialog = new Dialog(PopUpDialogRadioButton.this);
            dialog.setContentView(R.layout.sortfilterrow);
            radioGroup = (RadioGroup) dialog.findViewById(R.id.radioGroup1);
            radioButton1 = (RadioButton) dialog.findViewById(R.id.radio1);
            radioButton2 = (RadioButton) dialog.findViewById(R.id.radio2);
            radioButton3 = (RadioButton) dialog.findViewById(R.id.radio3);
            radioButton4 = (RadioButton) dialog.findViewById(R.id.radio4);
            radioButton5 = (RadioButton) dialog.findViewById(R.id.radio5);
            radioButton1.setOnClickListener(radioButtonOnClickListener);
            radioButton2.setOnClickListener(radioButtonOnClickListener);
            radioButton3.setOnClickListener(radioButtonOnClickListener);
            radioButton4.setOnClickListener(radioButtonOnClickListener);
            radioButton5.setOnClickListener(radioButtonOnClickListener);
            radioGroup.clearCheck();     
            radioButton1.setChecked(true);
            int selectedId = radioGroup.getCheckedRadioButtonId();
            RadioButton osButton = (RadioButton) dialog
                    .findViewById(selectedId);
            StringBuffer responseText = new StringBuffer();
            responseText.append(osButton.getText());
            Toast.makeText(getApplicationContext(), responseText,
                    Toast.LENGTH_SHORT).show();
            // radioGroup.setOnCheckedChangeListener(radioGroupOnCheckedChangeListener);

            dialog.setCancelable(true);
            dialog.setTitle("Sort By");
            dialog.show();
        }

        private final OnClickListener radioButtonOnClickListener = new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                /*
                 * RadioButton rb = (RadioButton) v;
                 * Toast.makeText(SortFilterPopupActivity.this,
                 * rb.getText(), Toast.LENGTH_SHORT).show();
                 */
                switch (v.getId()) {
                case R.id.radio1:
                    Toast.makeText(PopUpDialogRadioButton.this, "first",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio2:
                    Toast.makeText(PopUpDialogRadioButton.this, "two",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio3:
                    Toast.makeText(PopUpDialogRadioButton.this, "three",
                            Toast.LENGTH_SHORT).show();
                                            dialog.dismiss();
                    break;
                case R.id.radio4:
                    Toast.makeText(PopUpDialogRadioButton.this, "four",
                            Toast.LENGTH_SHORT).show();
                                        dialog.dismiss();
                    break;
                case R.id.radio5:
                    Toast.makeText(PopUpDialogRadioButton.this, "five",
                            Toast.LENGTH_SHORT).show();
                    dialog.dismiss();
                    break;
                }
            }
        };
    });
}
4

2 に答える 2

4

これに使用する必要がありますSharedPreferences

5 つのラジオボタンがあるためSharedPreferences、以前にダイアログを使用したことがない場合は、デフォルト値 (たとえば 0) を使用できます。

int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).getInt("my_selected_radio",0);

次に、を使用してOnClickListener、どの値が選択されたかを知り、それを保存できます。

int radio_selected = getSharedPreferences("your_prefs", Activity.MODE_PRIVATE).edit().putInt("my_selected_radio",selectedValue).commit();

それはあなたの望ましい行動を達成するのに十分なはずです

それが役に立てば幸い!

于 2014-12-15T06:42:30.533 に答える