无法投射' void' to' android.widget.Button'

时间:2015-04-21 16:29:28

标签: android

我尝试学习Android的应用程序开发,我是新手。 我重新创建了他们在教程中展示的内容,但我的代码无效。首先我在android studio的设计视图中创建了一个按钮,然后我应该复制代码以给按钮提供向相机发送意图的功能。

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

    ((Button)findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, 0);


        }
    });
}

即使我复制了代码,我也会收到错误消息“无法将虚拟转换为android小部件按钮”。

问题是什么,如何解决?

4 个答案:

答案 0 :(得分:2)

您的教程尝试执行此操作,但在更少的行中

Button button = (Button)findViewById(R.id.button); // <-- object that belongs the view - the Button
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, 0);
        }
});

然而,你错过了一个括号:

((Button)findViewById(R.id.button) // <-- missing ")"

应该是:

((Button)findViewById(R.id.button))

以下是您的所有代码:

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

    ((Button)findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, 0);


        }
    });
}

答案 1 :(得分:1)

我认为你错过了教程中的括号

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

((Button)findViewById(R.id.button)).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, 0);


    }
 });
}

答案 2 :(得分:0)

您没有ID为按钮的视图。在您的activity_main布局中创建一个。

答案 3 :(得分:0)

R.layout.activity_main中,您需要一个R.id.button小部件。每次修改布局XML时,还要确保执行干净的构建。这很重要!