Android:按钮的Noob问题

时间:2011-01-08 20:17:34

标签: 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" 
android:onClick="onParsearClick" 
android:id="@+id/BotonParsear"

2 个答案:

答案 0 :(得分:1)

该行

EditText link = (EditText) findViewById(R.id.Link);

几乎就在那里。您正在声明一个新的局部变量link,它会影响link类中的实例变量main。因此,当您将局部变量分配给位于View的{​​{1}}实例时,它会超出范围,并在findViewById返回后不再存在。 onCreate读取的link变量仍然是onParsearClick,无法解除引用。因此,对null的调用失败。

更改该行,使其成为简单的赋值语句而不是变量声明:

link.setText

您可能希望了解Java未来的范围规则。

答案 1 :(得分:0)

你的例子(修改过)对我有用......

public void onParsearClick(View botonParsear) {
     Toast.makeText(this, "it is working", Toast.LENGTH_LONG).show();
    }

查看是否有任何此主题适用于您 - onClick won't fire on ImageView