【问题标题】:CheckBoxes are not getting cleared after clicking Next button单击下一步按钮后复选框未清除
【发布时间】:2016-10-26 19:38:16
【问题描述】:

我正在尝试实现一个调查应用程序,在该应用程序中我们只需要问几个问题,而且问题可以有多个答案。所以我使用了CheckBox,但我面临的问题是当我点击下一个按钮时,下一个问题出现在屏幕上,但检查最后一个问题的CheckBoxs 仍然检查新问题。因此,当我单击下一个按钮进行下一个问题时,我希望清除所有 CheckBoxs。

public class SurveyActivity extends Activity {

Button submit,conti,nextbtn;
TextView head,survey,optn1,optn2,optn3,optn4;
String que,opt1,opt2,opt3,opt4;
CheckBox checkBox1,checkBox2,checkBox3,checkBox4;
int surveyno=127;
int questionno=1;

public final static String TAG_SUCCESS = "success";

public static final String EXTRA_MESSAGE = "Message";
String msg;
private ProgressDialog pDialog;


JSONParser jsonParser = new JSONParser();


protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_survey);
    submit=(Button)findViewById(R.id.btnsumbit);
    conti=(Button)findViewById(R.id.btncontinue);
    head=(TextView)findViewById(R.id.tvproject);
    nextbtn=(Button)findViewById(R.id.btnsubmtnxt);
    survey=(TextView)findViewById(R.id.tvsurvey);

    optn1=(TextView)findViewById(R.id.tvoptone);
    optn2=(TextView)findViewById(R.id.tvopttwo);
    optn3=(TextView)findViewById(R.id.tvoptthree);
    optn4=(TextView)findViewById(R.id.tvoptfour);

    checkBox1=(CheckBox)findViewById(R.id.chkopt1);
    checkBox2=(CheckBox)findViewById(R.id.chkopt2);
    checkBox3=(CheckBox)findViewById(R.id.chkopt3);
    checkBox4=(CheckBox)findViewById(R.id.chkopt4);


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

       do
       {
           new FetchQuestion().execute();
           questionno++;
       }while(questionno>=22);
        }
    });


    //font
    Typeface type01=Typeface.createFromAsset(getAssets(),"HelveticaNeue-UltraLight.ttf");
    head.setTypeface(type01);

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

            Intent fours1 = new Intent(SurveyActivity.this, BeginAction.class);

            startActivity(fours1);
        }

    });

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

            Intent fours1 = new Intent(SurveyActivity.this, EntrpNxtStart.class);

            startActivity(fours1);
        }

    });

   new FetchQuestion().execute();

}


public void linkdn(View view)
{
    Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.linkedin.com"));
    startActivity(intent);
}
public void facebook(View view)
{
    Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com"));
    startActivity(intent);
}
public void twiiter(View view)
{
    Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/"));
    startActivity(intent);
}
public void insta(View view)
{
    Intent intent=new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.instagram.com/"));
    startActivity(intent);
}



class FetchQuestion extends AsyncTask<String, String, String>
{
    private ProgressDialog progressDialog;


    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        progressDialog = new ProgressDialog(SurveyActivity.this);
        progressDialog.setTitle("Contacting Servers");
        progressDialog.setMessage("Logging in ...");
        progressDialog.setIndeterminate(false);
        progressDialog.setCancelable(true);
        progressDialog.show();
    }

    @Override
    protected String doInBackground(String... args)
    {



        System.out.println("Doinbackground entered!");

        List<NameValuePair> params = new ArrayList<NameValuePair>();

        params.add(new BasicNameValuePair("questionno",String.valueOf(questionno)));
        params.add(new BasicNameValuePair("surveyno",String.valueOf(surveyno)));


        JSONObject json = jsonParser.makeHttpRequest("http://www.tikox.com/ws/survey.php","POST", params);
        System.out.println("json object made, php should exec now!" + json.toString());

        Log.d("Create Response", json.toString());
        try {
            int success = json.getInt(TAG_SUCCESS);
            if (success == 1) {
                System.out.println(" Details fetched Successfully!");
                String msg = json.getString("message");
                System.out.println(" msg " + msg);



                que = json.getString("question");
                System.out.println(" que " + que);
                opt1 = json.getString("option1");
                System.out.println(" opt1 " + opt1);
                 opt2 = json.getString("option2");
                System.out.println(" opt2 " + opt2);
                 opt3 = json.getString("option3");
                System.out.println(" opt3 " + opt3);
                 opt4 = json.getString("option4");
                System.out.println(" opt4 " + opt4);

            }
            else
            {
                System.out.print("UnSuccessfull ");
                msg = json.getString("message");
                System.out.print(msg);

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_LONG).show();
                    }
                });

            }


        } catch (JSONException e) {
            e.printStackTrace();
        }
        return null;
    }



    protected void onPostExecute(String file_url)
    {

        progressDialog.dismiss();
        survey.setText(que);
        optn1.setText(opt1);
        optn2.setText(opt2);
        optn3.setText(opt3);
        optn4.setText(opt4);
    }
}
}

【问题讨论】:

    标签: java android android-studio checkbox


    【解决方案1】:

    单击下一步后,您需要清除复选框。将以下代码添加到 onPostExecute()。

    checkBox1.setChecked(false);
    checkBox2.setChecked(false);
    checkBox3.setChecked(false);
    checkBox4.setChecked(false);
    

    【讨论】:

      【解决方案2】:

      CheckBox 类继承自 CompoundButton,它有一个 setChecked 方法,您可以在 nextbtn 点击监听器中使用该方法。

      Android 文档中有一个 Checkboxes 的示例:https://developer.android.com/reference/android/widget/CheckBox.html

      【讨论】:

      • 非常感谢 Sergio 的快速回复
      【解决方案3】:

      On Next click listener 取消选中所有复选框,如

      protected void onPostExecute(String file_url)
          {
              checkBox1.setSelected(false);
              checkBox2.setSelected(false);
              checkBox3.setSelected(false);
              checkBox4.setSelected(false);
      
              progressDialog.dismiss();
              survey.setText(que);
              optn1.setText(opt1);
              optn2.setText(opt2);
              optn3.setText(opt3);
              optn4.setText(opt4);
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-06
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 2019-09-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多