2017-05-11 6 views
-3

ラジオボタンの3つのラジオボタンを持つアラートダイアログを用意して、それぞれラジオボタンの単純な表示ではなくイメージを持つようにしたい私のmainActivity。私はselected_userをmainActivityに戻すことができないという点を除いて、すべて正常に動作します。私はたくさん検索しましたが、解決策を見つけることができませんでした。私はAndroidで新しく、助けてください。Android - AlertDialogでRadioButtonsの代わりに画像を使用する方法

mainActivity.java:

myImage.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       myAlert alert = new myAlert(this, value);//I use this value to check the item that was chosen in mainActivity before calling AlertDialog 
       alert.show(); 
      } 
     }); 

myAlert.java:

public class myAlert extends Dialog implements View.OnClickListener { 

Context context; 
String value; 
RadioButton rb1, rb2, rb3; 
RadioGroup rg; 

public myAlert(@NonNull Context context, String value) 
{ 
    super(context); 
    this.context = context; 
    this.value = value; 
} 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alert); 

    rb1 = (RadioButton)findViewById(R.id.rb1); 
    rb2 = (RadioButton)findViewById(R.id.rb2); 
    rb3 = (RadioButton)findViewById(R.id.rb3); 

    if(value.equals("car")) 
     rb1.setChecked(true); 
    else if(value.equals("bus")) 
     rb2.setChecked(true); 
    else 
     rb3.setChecked(true); 

    rb1.setOnClickListener(this); 
    rb2.setOnClickListener(this); 
    rb3.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) 
{ 
    int selectId=rg.getCheckedRadioButtonId(); 
    RadioButton selected = (RadioButton)findViewById(selectId); 
    String selected_user = selected.getText().toString(); 

    dismiss(); 
}} 

alert.xml:

<RadioButton 
    android:id="@+id/rb1" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="@drawable/draw" 
    android:button="@null" 
    android:drawableBottom="@drawable/ib_rb1_alert" 
    /> 

<RadioButton 
    android:id="@+id/rb3" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="@drawable/draw" 
    android:button="@null" 
    android:drawableBottom="@drawable/ib_rb3_alert" /> 

<RadioButton 
    android:id="@+id/rb2" 
    android:layout_width="100dp" 
    android:layout_height="100dp" 
    android:background="@drawable/draw" 
    android:button="@null" 
    android:drawableBottom="@drawable/ib_rb2_alert" /> 

答えて

0

私はあなたの質問や、コードを理解している場合、あなたができ、戻りませんメインアクティビティで "selected_user"変数を設定している場合は、メインアクティビティに1つのクラス変数を追加します&それのセッターメソッドを作成し、それをあなたの "selected_user" 変数の値を設定し、これをチェック:

class MainActivity extends AppCompatActivity{ 
    String mySelectedUserID = ""; 

    public void setMySelectedUserID(String mySelectedUserID) { 
     this.mySelectedUserID = mySelectedUserID; 
    } 
} 

myAlert.class:

public class myAlert extends Dialog implements View.OnClickListener { 

       MainActivity context; 
       String value; 
       RadioButton rb1, rb2, rb3; 
       RadioGroup rg; 

       public myAlert(@NonNull MainActivity context, String value) { 
        super(context); 
        this.context = context; 
        this.value = value; 
       } 

       @Override 
       protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.alert); 

        rb1 = (RadioButton) findViewById(R.id.rb1); 
        rb2 = (RadioButton) findViewById(R.id.rb2); 
        rb3 = (RadioButton) findViewById(R.id.rb3); 

        if (value.equals("car")) 
         rb1.setChecked(true); 
        else if (value.equals("bus")) 
         rb2.setChecked(true); 
        else 
         rb3.setChecked(true); 

        rb1.setOnClickListener(this); 
        rb2.setOnClickListener(this); 
        rb3.setOnClickListener(this); 
       } 

       @Override 
       public void onClick(View v) { 
        int selectId = rg.getCheckedRadioButtonId(); 
        RadioButton selected = (RadioButton) findViewById(selectId); 
        String selected_user = selected.getText().toString(); 
        context.setMySelectedUserID(selected_user); 

        dismiss(); 
       } 
      } 
関連する問題