setContentView在android中如何工作?

问题描述:

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

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(); 
      } 
     }); 
    } 
+0

你为什么不把你的按钮添加到布局?什么是“绘制”? – SqueezyMo

您尝试访问android xml布局中的Button,但不在Activity中设置此布局。

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

感谢

您可以创建一个多个布局,并添加绘图和线性布局,该布局。

就是这样。

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

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

setContentView(l1) 

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