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