在Android中的OnClick不起作用

时间:2014-07-22 13:21:04

标签: java android xml

我正在编写一个Android代码...我已在右上角创建了一个菜单项(" +")。我已经在我的代码中看到了这个项目的OnClick,但MyApp没有运行,并且说不幸停止了。在此之前我使用了

 public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.add:
              //  Toast.makeText(this, "Adding button selected", Toast.LENGTH_SHORT).show();
                return true;
            default:
                return true;
        }
    }

当用户点击该项目并且它有效时。但是我需要知道我应该以这种方式做什么?!因为在那之后我想制作布局(Dialog),这样当我按下那个对话框显示的项目时,我想我应该用这个方法来做那个

myActivity:

package com.example.myapp;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.*;
import android.widget.TextView;
import android.widget.Toast;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    //@Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public boolean onCreateMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        return true;
    }

    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu, menu);
        return true;
    }

    public void AddOnClick (View view) {
        Toast.makeText(this, "Button 1 pressed",
                Toast.LENGTH_LONG).show();
    }

}

menu.xml文件:

<?xml version="1.0" encoding="utf-8"?>

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add"
          android:icon="@drawable/plus"
          android:title="Adding"
          android:orderInCategory="50"
          android:showAsAction="always"
          android:onClick="AddOnClick"
     />
</menu>

我哪里错了?!我的方式是正确显示对话框还是我应该做其他事情?! Tnx提前

3 个答案:

答案 0 :(得分:1)

执行以下操作并删除android:onClick in menu

MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.addXml, menu);

答案 1 :(得分:0)

签名错误。它应该是

 public void AddOnClick (MenuItem item) 

因为它是在MenuItem中声明的

答案 2 :(得分:-1)

public boolean onCreateMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    return true;
}

改变如下:

public boolean onCreateMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater().inflate(R.menu.addXml, menu);
    return true;
}