Android:按钮的菜鸟问题

标签 android button

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/

相关文章:

android - 在 flutter 应用程序中添加日期选择器的正确方法是什么?

java - Htmlunit Javascript 按钮/链接

android - 为我用 XML (Android) 制作的按钮设置图片?

html - 如何将一组按钮集中在页脚的右侧?

java - 是否可以仅将 String 传递给自定义 ListView 适配器?

android - 确定所选联系人的号码是手机还是固定电话?

android - fragment 中 ListView 上的按钮单击监听器

android - Android 键盘的重叠 - 真正的解决方案

button - Matplotlib 按钮

Swift - 自定义按钮类阴影大小缩放不起作用