我最近开始使用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();
}
});
答案 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。