安卓ImageButton无法触发onclick事件,我的代码有什么问题?

4

我有一段非常简单的代码,其中包括一个ImageButton和一个指向另一个Activity的OnClickListener,但是点击ImageButton并没有触发onClick事件(Button也有相同的问题):

public class ToolsActivity extends Activity {
private ImageButton btnCamera;
final Context context = ToolsActivity.this;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_tools);
    this.btnCamera = (ImageButton) findViewById(R.id.cameraButton);
    this.btnCamera.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            Intent intent = new Intent(context,MainActivity.class);
            startActivity(intent);  
        }
    }); 
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_tools, menu);
    return true;  
}

XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >

  <ImageButton
      android:id="@+id/cameraButton"
      android:layout_width="100dp"
      android:layout_height="wrap_content"
      android:layout_alignParentBottom="true"
      android:layout_centerHorizontal="true"
      android:background="@drawable/btncamera"
      android:contentDescription="@string/desc" />


2
你确定 onClick 回调没有运行吗?也许你的活动只是启动失败了。你检查过日志或尝试过调试器了吗? - jbowes
将MainActivity作为主要启动项是没有问题的,我在onClick中添加了其他操作,但结果相同,调试器无法到达onClick,非常奇怪。 - kimo
我复制并粘贴了两个按钮。它们都有android:layout_alignParentTop="true"属性。我只在顶部的一个按钮上添加了点击事件。尽管我可以清楚地在屏幕上看到两个按钮图像,但它们不知何故重叠在一起。 - Mr. B
2个回答

9

我看不出代码有什么问题。如果它与常规按钮一起工作,那么我的猜想是你可能需要在xml中设置 android:clickable =“true”(你也可以在代码中执行)。


0

我打开了一个新的Android项目,复制粘贴了我的代码,它可以运行,我猜测可能是项目出了一些问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接