setContentView如何在android中运行?

时间:2015-06-21 09:44:20

标签: java android

我正在尝试在我的Android应用程序上显示一个按钮,但每次我运行该应用程序时都会崩溃。我意识到这是因为我多次使用setContentView?我不明白它是如何工作的,并且不明白我如何解决这个问题所以我的按钮会显示。我的代码如下。

public class MainActivity extends Activity {
    Draw draw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        draw = new Draw(this);
        draw.setBackgroundColor(Color.BLUE);
        setContentView(draw);

        LinearLayout l = new LinearLayout(this);
        l.setOrientation(LinearLayout.VERTICAL);
        setContentView(l);
        l.addView(new Draw(this));
        //setContentView(R.layout.activity_main);



        setUpBlockBtn();
    }

    private void setUpBlockBtn(){
        setContentView(R.layout.activity_main);
        Button addBlockButton = (Button)findViewById(R.id.btnBlock);

        addBlockButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.i("DemoButtonApp", "you clicked the button");
                //finish();
            }
        });
    }

2 个答案:

答案 0 :(得分:0)

您尝试从android xml布局访问Button但您没有在Activity中设置此布局。

按下activity_main.xml按钮并在您的活动中使用此按钮。

由于

答案 1 :(得分:0)

您可以再创建一个布局,并将Draw和Linear布局添加到该布局中。

像这样。

LinearLayout l1=new LinearLayout(this);
l1.setOrientation(LinearLayout.VERTICAL);

l1.addView(draw);
l1.addView(l2)   // your linearLayout.

setContentView(l1)

请记住,您不能多次使用setContentView。 应该有顶级布局,包括子视图和其他布局,然后您可以将该布局添加到您的活动。