3

我在 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();
            }
        });

    }

}

我试图在链接中 查看方法 setOnClickListener(new View.OnClickListener(){}) 对于 imageButton1 类型未定义, 但它对我不可用。

4

3 回答 3

3

你有一个错字:

EditText txt_username = (EditText) findViewById(R.id.txt_username)

不是 EditText txt_username = (EditText) findViewByID(R.id.txt_username);

最后一个字母d是小写的

于 2013-07-01T09:06:16.973 回答
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-class,它不是当前范围。用这个:

Activity2.this.findViewById(R.id.txt_username);

这将获得外部类 ( Activity) 的上下文,并使您能够使用它的实例方法。

于 2013-07-01T09:09:51.290 回答
0

findViewByID()由 Activity 类拥有。OnClickListener 是另一个类,有自己的功能和方法。您基本上是在尝试调用一个OnClickListener.findViewByID()不存在的函数。

我的建议是在 OnClickListener 之外定义 EditText。为此,请EditText txt_username;在 onCreate() 函数之前添加,然后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();
            }
        });

    }

}
于 2013-07-01T09:13:10.507 回答