2017-04-17 25 views
0

私はラジオボタンを3つ持っています。ラジオボタンを切り替えるときは、アラートダイアログボックスを使用しています。今すぐクリックはいもう1つのラジオボタンがオンになっていますここでNO前のラジオボタンに行くにもできない...ラジオボタンの切り替え方法

私のコードです:

RadioGroup radioGroup; 
RadioButton pre, during, post; 
String lastChecked = "pre"; //This is the Flag which i m using 

radioGroup.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      lastCheckedid = radioGroup.getCheckedRadioButtonId(); 
     } 
    }); 
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      lastCheckedid = radioGroup.getCheckedRadioButtonId(); 
      if (pre.isChecked()) { 
       lastChecked = "pre"; 
       getlastchecked(); 
      } else if (during.isChecked()) { 
       lastChecked = "during"; 
       getlastchecked(); 
      } else if (post.isChecked()) { 
       lastChecked = "post"; 
       getlastchecked(); 
      } 
     } 
    }); 
private void getlastchecked() { 
     AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(MainActivity.this); 
     alertDialog2.setTitle("Confirm Delete..."); 
     alertDialog2.setMessage("Are you sure you want delete this post ?"); 
     alertDialog2.setIcon(R.drawable.delete); 
     alertDialog2.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       imageView1.setImageDrawable(null); 
       textview_imagename1.setText(""); 
       imageView2.setImageDrawable(null); 
       textview_imagename2.setText(""); 
       imageView3.setImageDrawable(null); 
       textview_imagename3.setText(""); 
      } 
     }); 
     alertDialog2.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       switch (lastCheckedid) { 
        case R.id.pre: 
if (lastChecked.equals("during")){ 
during.setChecked(true);} 
else if (lastCheck.equals("post")){ 
post.setChecked(true);} 
         break; 
        case R.id.during: 
if (lastChecked.equals("pre")){ 
pre.setChecked(true);} 
else if (lastCheck.equals("post")){ 
post.setChecked(true);} 
         break; 
        case R.id.post: 
if (lastChecked.equals("during")){ 
during.setChecked(true);} 
else if (lastCheck.equals("pre")){ 
pre.setChecked(true);} 
         break; 
       } 
    } 
     }); 
     alertDialog2.show(); 
    } 

NOの条件が機能していません...

を助けてください

答えて

0

チェックしたボタンの前の値を取得してその状態に戻すのは難しいです。最初に、あなたのコーディングにuseCheckedidがありますが、これは使用名ごとに正しくありません。ですから、私はそれをcurCheckedidに変更して、デモであなたの問題の解決策を試してみてください。これがあなたの問題を解決することを願っています。コードの下に試してみてください: -

では、初期のリスナーのためにその後varible

RadioGroup radioGroup; 
RadioButton pre, during, post; 
String lastChecked = "pre"; //This is the Flag which i m using 
int curCheckedid; 
boolean isClickSet = true; 

を定義します -

lastChecked = "pre"; 
    curCheckedid = pre.getId(); 
    radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      curCheckedid = radioGroup.getCheckedRadioButtonId(); 
      if (pre.isChecked()) { 
       if(lastChecked != "pre" && isClickSet) 
        getlastchecked(); 
       else { 
        isClickSet = true; 
        lastChecked = "pre"; 
       } 
      } else if (during.isChecked()&& isClickSet) { 
       if(lastChecked != "during") 
        getlastchecked(); 
       else { 
        isClickSet = true; 
        lastChecked = "during"; 
       } 
      } else if (post.isChecked()&& isClickSet) { 
       if(lastChecked != "post") 
        getlastchecked(); 
       else { 
        isClickSet = true; 
        lastChecked = "post"; 
       } 
      } 
     } 
    }); 

、別getlastchecked()メソッド: -

遅れて申し訳ありません
private void getlastchecked() { 
    AlertDialog.Builder alertDialog2 = new AlertDialog.Builder(MainActivity.this); 
    alertDialog2.setTitle("Confirm Delete..."); 
    alertDialog2.setMessage("Are you sure you want delete this post ?"); 
    alertDialog2.setIcon(R.drawable.delete); 
    alertDialog2.setPositiveButton("YES", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      imageView1.setImageDrawable(null); 
      textview_imagename1.setText(""); 
      imageView2.setImageDrawable(null); 
      textview_imagename2.setText(""); 
      imageView3.setImageDrawable(null); 
      textview_imagename3.setText(""); 

      if (pre.isChecked()) 
       lastChecked = "pre"; 
      else if (during.isChecked()) 
       lastChecked = "during"; 
      else if (post.isChecked()) 
       lastChecked = "post"; 
      isClickSet = true; 
     } 
    }); 
    alertDialog2.setNegativeButton("NO", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      switch (curCheckedid) { 
       case R.id.pre: 
        if (lastChecked.equals("during")){ 
         isClickSet = false; 
         during.setChecked(true); 
         isClickSet = true; 
         lastChecked = "during";} 
        else if (lastChecked.equals("post")){ 
         isClickSet = false; 
         post.setChecked(true); 
         isClickSet = true; 
         lastChecked = "post";} 
        break; 
       case R.id.during: 
        if (lastChecked.equals("pre")){ 
         isClickSet = false; 
         pre.setChecked(true); 
         isClickSet = true; 
         lastChecked = "pre";} 
        else if (lastChecked.equals("post")){ 
         isClickSet = false; 
         post.setChecked(true); 
         isClickSet = true; 
         lastChecked = "post";} 
        break; 
       case R.id.post: 
        if (lastChecked.equals("during")){ 
         isClickSet = false; 
         during.setChecked(true); 
         isClickSet = true; 
         lastChecked = "during";} 
        else if (lastChecked.equals("pre")){ 
         isClickSet = false; 
         pre.setChecked(true); 
         isClickSet = true; 
         lastChecked = "pre";} 
        break; 
      } 
     } 
    }); 
    alertDialog2.show(); 
} 
+0

返信。これは私の問題を解決しました..あなたの解決に感謝します。あなたの時間を感謝.. @NitinPatel –

+0

@AbhijitPatilようこそ。 –

0

このお試しください:ちょうどこの行はlastCheckedIdに、新たに確認された値を保存してAlertDialogを作成しますOnCheckedCHangeListener

lastCheckedid = radioGroup.getCheckedRadioButtonId(); 

からこの行を削除

RadioGroup registerGender = (RadioGroup)findViewById(R.id.regsiter_gender); 
int selectedId = registerGender.getCheckedRadioButtonId(); 
// find the radiobutton by returned id 
radioButtonGender = (RadioButton) findViewById(selectedId); 
radioButtonGender.getText().toString().trim() 
0

を。今、switchで、lastCheckedIdが現在のチェックされたIdを持っているので何も起こりません。その行を削除してもう一度やり直してください。

関連する問題