onclick没有在简历方法中工作

时间:2014-02-19 15:37:18

标签: android android-sqlite onclicklistener onresume

我的应用程序有问题,我有一个公式,用户应填写信息并将其保存到数据库,我有编辑文本和单选按钮:

    rm_1 = (EditText) findViewById(R.id.rm_1);
    rm_2 = (EditText) findViewById(R.id.rm_2);
    rm_3 = (EditText) findViewById(R.id.rm_3);
    rm_13_1 = (RadioButton) findViewById(R.id.rm_13_1);
    rm_13_2 = (RadioButton) findViewById(R.id.rm_13_2);
    rm_14_1 = (RadioButton) findViewById(R.id.rm_14_1);
    rm_14_2 = (RadioButton) findViewById(R.id.rm_14_2);
    rm_14_3 = (RadioButton) findViewById(R.id.rm_14_3);

我有一个方法Onclick将每个选中的无线电按钮与一个值相关联:

     public void onRadioButtonClicked(View view) {
    // Is the button now checked?

    boolean checked = ((Checkable) view).isChecked();


    switch (view.getId()) {
    case R.id.rm_13_1:
        if (checked)
            a = 0;
            break;
    case R.id.rm_13_2:
        if (checked)
            a = 1;
        break;
    case R.id.rm_14_1:
        if (checked)
            b = 0;
        break;
    case R.id.rm_14_2:
        if (checked)
            b = 1;
        break;
    case R.id.rm_14_3:
        if (checked)
            b = 2;
        break;
    case R.id.rm_14_4:
        if (checked)
            b = 3;
        break;
    }

直到现在一切正常,用户在编辑文本中写入并选择单选按钮,在数据库中我找到相同的信息。 为了保存用户输入的数据,我确实使用了共享首选项,因此当用户返回活动时,用户的文本写入和所选的单选按钮再次出现。

当用户更改活动时发生问题,所以如果他返回活动,他会发现单选按钮已被选中,但当他点击保存按钮时,他在数据库中获得的值为零,就像是方法:

                 public void onRadioButtonClicked(View view)

不工作,我不知道为什么?用户需要再次单击单选按钮才能在方法 onRadioButtonClicked(查看视图)中分配值,那么如何解决?

这是我保存数据的地方:

           Button bton = (Button) findViewById(R.id.ajoutUn);
    bton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                    ajouter(v);
        }
                  public void ajouter(View v) {
                  db.open();
                db.insertMENAGE(rm_1ts, rm_2ts, rm_3ts, rm_4ts, rm_5ts,
                rm_6ts, rm_7ts, rm_8ts, rm_9ts, rm_10ts, rm_11ts, 
                a, b, rm_14_4_autrets, rm_15ts);}}

数据库中的方法是:

                 public long insertMENAGE(String Region, String Provence_prefecture , String Commune_Arrondissement ,String N_district, String N_M_district , String N_menage_logement, String Adresse_menage , String Nom_Enqueteur, String code_enquêteur , String Date_realisation_enquête, String Nom_controleur , String Date_controle, int echantillon_principal, int Statut_enquêté , String autre, String Observations  ) {
      ContentValues initialValues = new ContentValues();
              initialValues.put(col_Commune_Arrondissement,Commune_Arrondissement);
      initialValues.put(col_N_district,N_district);
      initialValues.put(col_N_M_district,N_M_district);
      initialValues.put(col_N_menage_logement,N_menage_logement);
      initialValues.put(col_Adresse_menage,Adresse_menage);
      initialValues.put(col_Nom_Enqueteur,Nom_Enqueteur);
      initialValues.put(col_code_enquêteur ,code_enquêteur);
      initialValues.put(col_Date_realisation_enquête,Date_realisation_enquête);
      initialValues.put(col_Nom_controleur,Nom_controleur);
      initialValues.put(col_Date_controle,Date_controle);
      initialValues.put(col_echantillon_principal,echantillon_principal);
      initialValues.put(col_Statut_enquêté,Statut_enquêté);
      initialValues.put(col_Observations,Observations);

            return db.insertOrThrow(MENAGE,null, initialValues);
  }

2 个答案:

答案 0 :(得分:1)

首先,我发布了一个答案,因为文字太大了。

要么有一些我们没有看到的有意义的代码,要么就是理解一些问题。

方法onRadioButtonClicked(View view)仅在用户单击radioButton时调用。当用户从另一个Activity返回时,该按钮已被选中。这是正确的,这就是它应该如何表现。据我所知,此代码仅影响变量'a'和'b'。

另一方面,你说你有一个单独的“保存”按钮。当用户从另一个Acivity返回时,变量'a'和'b'应保留其值,并且'save'代码的结果应该有效。

我知道这不是一个答案,只是一些希望以某种方式帮助你的见解。

答案 1 :(得分:1)

检查onResume()方法中的所有单选按钮值,如下所示,并为变量赋值。

    if(rm_13_1.isChecked())
    {

    }
    else if(rm_13_2.isChecked())
    {

    }
    else if(rm_14_1.isChecked())
    {

    }
    else if(rm_14_2.isChecked())
    {

    }
    else if(rm_14_3.isChecked())
    {

    }

希望它能运作