Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android studio中添加按钮_Java_Android - Fatal编程技术网

Java 如何在android studio中添加按钮

Java 如何在android studio中添加按钮,java,android,Java,Android,我试图在android studio中为我的应用程序添加一个按钮,我跟踪了一段youtube视频,但每次我运行它时,它都会关闭。我不知道为什么会发生这种情况,也不知道如何让按钮工作。如果有人能帮忙,那就太好了 public class MainActivity extends Activity { Draw draw; @Override protected void onCreate(Bundle savedInstanceState) { super

我试图在android studio中为我的应用程序添加一个按钮,我跟踪了一段youtube视频,但每次我运行它时,它都会关闭。我不知道为什么会发生这种情况,也不知道如何让按钮工作。如果有人能帮忙,那就太好了

public class MainActivity extends Activity {
    Draw draw;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        LinearLayout l = new LinearLayout(this);
        l.setOrientation(LinearLayout.VERTICAL);
        setContentView(l);
        l.addView(new Draw(this));
        setContentView(R.layout.activity_main);

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

        setUpBlockBtn();
    }

    private void setUpBlockBtn(){
        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();
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }


}

您正在使用setContentView 3次,为什么??如果您在activity_main.xml中定义了按钮,则将其用作contentview。在程序中,当调用setUpBlockBtn()访问按钮对象时,必须设置正确的contentview,在本例中,它应该是activity_main.xml。再次在线setContentView处(绘制);您正在更改无法实例化按钮findViewById(R.id.btnBlock)的按钮;所以你的应用程序正在崩溃在短集正确的内容视图中

您有两个选项:

1-创建包含按钮的xml布局文件:

在res/layout目录中创建一个新的布局文件作为
activity\u main

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

  <Button 
      android:id="@+id/button"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Action!"
  />

</LinearLayout> 
2-将按钮动态添加到活动中:

public class MainActivity extends Activity {

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById(R.id.button);
        setUpButton();
    }

    private void setUpButton() {
        // Do something with your button
    }
}
公共类MainActivity扩展了活动{

    Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // setContentView(R.layout.activity_main);
        // button = (Button) findViewById(R.id.button);

        button = new Button(this);
        // set button's properties

        setContentView(button);
        setUpButton();
    }

    private void setUpButton() {
        // Do something with your button
    }
}

有一种更简单的方法可以添加按钮 创建一个空白xml文件 在文本中添加

<Button 
     android:id="@+id/button"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
/>


这将创建一个按钮

将您的logcat输出放在这里,以了解错误?但可能是因为您使用了setContentView(l)而发生这种情况吗;两次。可能是Ok的重复谢谢,但是我怎么做,我不太了解它的功能和工作原理?在activity_main.xml中定义按钮,id为btnBlock。和
@重写受保护的void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button addBlockButton=(Button)findViewById(R.id.btnBlock);addBlockButton.setOnClickListener(新视图.OnClickListener(){@Override public void onClick(视图v){Toast.makeText(getApplicationContext(),“Button Clicked”,Toast.LENGTH_SHORT.show();});}
googleit获取基本教程:)