2017-04-17 115 views
0

我有三個單選按鈕..現在,當我想在單選按鈕之間切換時,我正在使用警報對話框..現在點擊另一個單選按鈕被選中, NO它不能去以前的單選按鈕..如何在單選按鈕之間切換android

這裏是我的代碼:

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

您的問題很難獲取先前選中的按鈕的值並取回該狀態。首先,你的編碼有lastCheckedid,根據使用名稱不正確。所以,我已經改變了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

試試這個:

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

剛剛從OnCheckedCHangeListener

lastCheckedid = radioGroup.getCheckedRadioButtonId(); 

這條線將節省新簽入的值到lastCheckedId然後創建AlertDialog刪除此行。現在,在切換中,沒有什麼會發生,因爲lastCheckedId具有當前檢查的Id。只需刪除該行,然後再試一次