package com.parseador.prueba;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
public class main extends Activity {
/** Called when the activity is first created. */
//private Button botonParsear;
private EditText link;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//Button botonParsear = (Button) findViewById(R.id.BotonParsear);
//EditText link = (EditText) findViewById(R.id.Link);
}
public void onParsearClick(View botonParsear) {
link.setText("Siii");
}
}
你好。
我在运行这段代码时遇到了问题。它一直在FCing。已尝试更改评论内容,但无法使按钮起作用。
如果你能告诉我我做错了什么,我将不胜感激。
提前致谢。
Ps:xml文件中确实有按钮上的方法。这是它的代码(强调用):
android:layout_height="wrap_content"
android:text="@string/parse"
android:textSize="20sp"
android:layout_width="wrap_content"
android:layout_gravity="center"
<strong>android:onClick="onParsearClick"</strong>
android:id="@+id/BotonParsear"
最佳答案
线
EditText link = (EditText) findViewById(R.id.Link);
快到了。您声明了一个新的局部变量 link
,它隐藏了 main
类中的实例变量 link
。因此,当您将局部变量分配给 findViewById
所在的 View
实例时,它会超出范围并在 onCreate
返回后不复存在。 onParsearClick
读取的 link
变量仍然是 null
,无法取消引用。因此,对 link.setText
的调用失败。
更改该行,使其成为简单的赋值语句而不是变量声明:
link = (EditText) findViewById(R.id.Link);
您可能想阅读 Java 的 future 范围规则。
关于Android:按钮的菜鸟问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4635918/