我在Button和EditText的以下代码中遇到上述错误。我只是不知道它为什么会来。如果你们能理解并告诉我这里究竟出了什么问题,那就太好了。
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Activity2 extends Activity {
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
Button btn = (Button) findViewByID(R.id.btn_OK);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = new Intent();
EditText txt_username = (EditText) findViewByID(R.id.txt_username);
data.setData(Uri.parse(txt_username.getText().toString()));
setResult(RESULT_OK, data);
finish();
}
});
}
}
我试图在链接The method setOnClickListener(new View.OnClickListener(){}) is undefined for the type imageButton1中看到,但它对我来说无法使用。
答案 0 :(得分:3)
你有一个错字:
是EditText txt_username = (EditText) findViewById(R.id.txt_username)
;
不是EditText txt_username = (EditText) findViewByID(R.id.txt_username);
最后一个字母 d 是小写的
答案 1 :(得分:1)
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...
EditText txt_username = (EditText) findViewByID(R.id.txt_username);
//...
}
}
这是一个“匿名内部类”(类型为View.OnClickListener
)。 findViewById()
- 方法来自Activity
- 类,它不是当前范围。使用此:
Activity2.this.findViewById(R.id.txt_username);
这将获得外部类(Activity
)的上下文,并使您能够使用它的实例方法。
答案 2 :(得分:0)
findViewByID()
归Activity类所有。 OnClickListener是另一个类,有自己的函数和方法。您基本上是在尝试调用不存在的函数OnClickListener.findViewByID()
。
我的建议是在OnClickListener之外定义EditText。为此,请在onCreate()函数前添加EditText txt_username;
,然后在txt_username = (EditText) findViewByID(R.id.txt_username);
之前添加btn.setOnClickListener()
。
以下是代码:
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class Activity2 extends Activity {
EditText txt_username;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
txt_username = (EditText) findViewById(R.id.txt_username);
Button btn = (Button) findViewById(R.id.btn_OK);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = new Intent();
data.setData(Uri.parse(txt_username.getText().toString()));
setResult(RESULT_OK, data);
finish();
}
});
}
}