将参数从方法传递给OnClickListener

时间:2013-11-27 16:43:58

标签: android parameter-passing

我想将字符串“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);
        }
    }
});
}

}

2 个答案:

答案 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>