方法findViewByID(int)未定义类型new View.OnClickListener(){}

时间:2013-07-01 09:05:12

标签: android

我在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中看到,但它对我来说无法使用。

3 个答案:

答案 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();
            }
        });

    }

}