按钮问题

时间:2009-10-13 11:12:35

标签: android button

我最近开始使用android。

我写了这段代码

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ArrangeMe extends Activity {
    private Button button1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        this.button1 = (Button)findViewById(R.id.buttonOne);
        this.button1.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
                finish();
            }
        });
        setContentView(R.layout.main);
    }
}

我的main.xml如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" android:text="ArrangeMe"/>
<Button android:text="Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/buttonOne"></Button>
</LinearLayout>

但是当我通过这条线时

this.button1 = (Button)findViewById(R.id.buttonOne);

我观察到button1 = null。但是当我输入R.id. eclipse确实建议自动完成buttonOne(这表明布局xml是正确的!)

我哪里错了?

编辑:

很有趣,我尝试了以下代码,

仍然没有出现按钮。它已经停止崩溃,但按钮没有出现!

   button1 = new Button(getContext());
    button1.setText("1");
    addView(button1, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    button1.setOnClickListener(new OnClickListener() {
        //@Override
        public void onClick(View v) {
            finish();
        }
    });

这是错误

我将它们改为

   button1 = new Button(getBaseContext());
    button1.setText("1");
    addContentView(button1, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
    button1.setOnClickListener(new OnClickListener() {
        //@Override
        public void onClick(View v) {
            finish();
        }
    });

3 个答案:

答案 0 :(得分:2)

我认为你应该调用setContentView(R.layout.main);之后,您的活动类应该知道在哪里查找视图。

答案 1 :(得分:0)

您在设置活动中的ContentView之前指定了button1。更改您的代码,如下所示,

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ArrangeMe extends Activity {
    private Button button1;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main); // you misplaced this line in your code


        this.button1 = (Button)findViewById(R.id.buttonOne);
        this.button1.setOnClickListener(new OnClickListener() {
            //@Override
            public void onClick(View v) {
                finish();
            }
        });
    }
}

答案 2 :(得分:0)

你必须使用小写字母表示你的视图的id,然后第二个构建你的项目并清理它可能会在R.java中为按钮生成id。