2014-02-19 109 views
1

我在我的应用程序中的问题,我有一个formulaire哗哗用户应填写信息并将其保存到数据库中,我有两个编辑文本和单选按钮:的onclick没有恢复方法工作

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(View view),那么如何解决这个问题呢?

这是我保存数据:

  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); 
    } 
+0

你也应该张贴在您设定的侦听器的代码,只是张贴相关的所有单选按钮的代码。 – thelawnmowerman

+0

发布onRadioButtonClicked的代码和您用于将数据保存到数据库的代码,以便我们能够为您提供帮助。 – chipopo

+0

public void onRadioButtonClicked(View view),这种方法就像一个列表器,它在选择单选按钮时需要考虑 –

回答

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()) 
    { 

    } 

希望它会工作

+0

是的,它的工作原理,感谢您的答案! –

1

首先我发布这个答案,因为文本是太大的。

要么有一些有意义的代码,我们没有看到,或有一些问题理解了一些事情。

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

另一方面,你说你有一个单独的'保存'按钮。当用户从另一个Acivity返回时,变量'a'和'b'应该保留它们的值,'save'代码的结果应该可以工作。

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

+0

感谢你的时间,你已经很好地描述了这个问题,但我必须清楚(a)和(b)与所选单选按钮相关的值,但是当用户返回活动时,这些值不会立即受到影响,用户应该再次点击才能使(a)和(b)的值受到影响。这就是问题 –

+0

@Arain:你对此有所了解吗? –

+0

你可以在点击保存按钮时检查所有这些单选按钮值@UtmanAlami – Andrain