我尝试学习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小部件按钮”。
问题是什么,如何解决?
答案 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时,还要确保执行干净的构建。这很重要!