我想将字符串“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);
}
}
});
}
}
答案 0 :(得分:3)
更改
public void Proses(String x)
到
public void Proses(final String x)
答案 1 :(得分:1)
定义自己的监听器
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
不会找到您期望的控件,因为您位于侦听器的上下文中,而不是您的活动上下文中。< / p>