Android 将参数从方法传递到OnClickListener

Android 将参数从方法传递到OnClickListener,android,parameter-passing,Android,Parameter Passing,我想在单击submit按钮时,将字符串“Jawab”传递给方法Proses和OnClick,以比较数据库中的数据和EditText中的数据,但在OnClick方法中无法检测到字符串Jawab。请参阅下面的代码 public void LoadSoal(int a, DataAdapter x) { Cursor testdata = x.getTestData(a); String Soal = Utility.GetColumnValue(testdata, "s

我想在单击submit按钮时,将字符串“Jawab”传递给方法Proses和OnClick,以比较数据库中的数据和EditText中的数据,但在OnClick方法中无法检测到字符串Jawab。请参阅下面的代码

public void LoadSoal(int a, DataAdapter x)
{       
    Cursor testdata = x.getTestData(a);
    String Soal = Utility.GetColumnValue(testdata, "soal");
    String Jawab = Utility.GetColumnValue(testdata, "jawab");

    TextView textSoal = (TextView)findViewById(R.id.tekssoal);
    textSoal.setText(Soal);
    Proses(Jawab);
}

public void Proses(String x)
{               
    btnsubmit.setOnClickListener(new View.OnClickListener()
    {
    public void onClick(View v)
    {
        int skor = 0;
        TextView textScore = (TextView)findViewById(R.id.teksskor);
        EditText teksJawab = (EditText)findViewById(R.id.teksjawab);

        String jawaban = teksJawab.getText().toString();

        // TODO Auto-generated method stub
        if (x.equals(jawaban))
            {
                skor = skor + 10;
                textScore.setText(skor);
            }
        else
        {
            skor = skor + 0;
            textScore.setText(skor);
        }
    }
});
}
}改变

public void Proses(String x)

改变

public void Proses(String x)


定义你自己的听众

private class MyListener implements View.OnClickListener{
     private Context mContext;
     private String mValue;
     public MyListener(Context context, String value){
         mContext = context;
         mValue = value;
     }

     @Override
     public void onClick(View v){
        //do whatever you need here
        //if you need some view, use mContext.findViewById
     }
}
让听众喜欢

btnsubmit.setOnClickListener(new MyListener(this, Jawab));

编辑同样在您的代码中,我不认为
findViewById
会找到您期望的控件,因为您在侦听器的上下文中,而不是在活动上下文中。

定义您自己的侦听器

private class MyListener implements View.OnClickListener{
     private Context mContext;
     private String mValue;
     public MyListener(Context context, String value){
         mContext = context;
         mValue = value;
     }

     @Override
     public void onClick(View v){
        //do whatever you need here
        //if you need some view, use mContext.findViewById
     }
}
让听众喜欢

btnsubmit.setOnClickListener(new MyListener(this, Jawab));

EDIT同样在您的代码中,我认为
findViewById
不会找到您期望的控件,因为您在侦听器的上下文中,而不是在活动上下文中。

java惯例是以小写字母开始变量和方法名称。得到的错误是什么?这是一种java约定,以小写字母开始变量和方法名称。你得到了什么错误?我使用了这段代码,但程序仍然没有运行。。它表示“未使用字段MenuSoal.CompareAnswer.mContext的值”。:|是的,这是一个警告,但是当我单击btnsubmit时,我仍然无法将数据库中的答案与EditText中的答案进行比较。我使用了此代码,但程序仍然没有运行。。它表示“未使用字段MenuSoal.CompareAnswer.mContext的值”。:|是的,这是一个警告,但当我单击btnsubmit时,我仍然无法将数据库中的答案与EditText中的答案进行比较。我使用了此代码,没有错误,但仍然无法比较字符串:D可能代码中还有其他错误-_-a设置TextView的文本时,必须传递字符串作为参数或资源ID。如果您传递一个int(正如您所做的),它可能会给出一个未找到资源的异常。因此,将代码更改为
textScore.setText(“+skor”)
。我认为这段代码有效,但我想检查更多,因为不管字符串“Jawab”和字符串“jawaban”是否相同,分数都没有改变。。x_xi使用了这段代码,没有错误,但我仍然无法比较字符串:D可能代码中还有其他错误-_-a设置TextView的文本时,必须传递字符串作为参数或资源ID。如果您传递一个int(正如您所做的),它可能会给出一个未找到资源的异常。因此,将代码更改为
textScore.setText(“+skor”)
。我认为这段代码有效,但我想检查更多,因为不管字符串“Jawab”和字符串“jawaban”是否相同,分数都没有改变。。x_x