在线性布局中添加按钮会崩溃

时间:2013-04-08 14:51:45

标签: android android-linearlayout

我真的不明白为什么这个简单的代码在这一行layout.addView(button);

中崩溃了
super.onCreate(savedInstanceState);
    layout = (LinearLayout)findViewById(R.id.linearLayout);
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);

    Button button = new Button(this);
    button.setHeight(100);
    button.setWidth(100);
    button.setText("HELLO");
    button.setLayoutParams(p);
    layout.addView(button);

activity_main.xml中

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/linearLayout">
</LinearLayout>

编辑: 编辑过的代码仍然粉碎。但现在压缩setContentView。

super.onCreate(savedInstanceState);

    layout = (LinearLayout)findViewById(R.id.linearLayout);
    setContentView(layout); 
    LayoutParams p = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

    int i,j;
    Button button = new Button(this);
    button.setHeight(100);
    button.setWidth(100);
    button.setText("HELLO");
    layout.addView(button,p);

Logcat报告 enter image description here

2 个答案:

答案 0 :(得分:5)

仅仅因为你没有打电话给setContentView()View的根Activitynulllayout也是{{1}}。

答案 1 :(得分:0)

您在此处指定Views宽度高度:

button.setHeight(100);
button.setWidth(100);

然后立即覆盖它:

button.setLayoutParams(p);

试试这个,移除setWidthsetLayoutParams并移除p

  layout.addView(button, new LayoutParams(100,100));