【问题标题】:actionbar menu item onclick?操作栏菜单项onclick?
【发布时间】:2013-07-01 02:56:15
【问题描述】:

我有一个操作栏,它将所有内容放在右上角的菜单中,用户单击该菜单并打开菜单选项。

在我使用的每个活动中,我都会使用它来扩展操作栏菜单:

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

        return true;
    }

而我的 main2.xml 的 xml 是:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_searchHome"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="Seach"/>



</menu>

我的问题是我是否在 xml 中的项目中放置了 onclick,如果是,我应该将它调用的 onclick 方法放在哪里?我是否需要将它放在启动此操作栏的每个活动中?

【问题讨论】:

标签: android android-activity android-actionbar


【解决方案1】:

如果您像这样在菜单项上添加 onClick 属性:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/action_searchHome"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:onClick="doThis"
        android:title="Seach"/>



</menu>

然后在你的活动中:

public void doThis(MenuItem item){
    Toast.makeText(this, "Hello World", Toast.LENGTH_LONG).show();
}

注意:

ActionBarSherlock 已弃用。除非您正在为 Android 4.0 或更早版本开发应用程序,否则请不要使用它。但是如果你正在使用这个库,你将不得不导入

import com.actionbarsherlock.view.MenuItem;

而不是

import com.android.view.MenuItem;

此外,您还可以执行以下操作:ActionBar Sherlock Menu Item OnClick

@adneal 提到的。

【讨论】:

  • 不,这不是这样做的方法,AcitonBars 有自己的方法来处理点击。看这里:developer.android.com/guide/topics/ui/menus.html#options-menu
  • 两种方式都有效。另外,我提到了你刚刚在我的答案末尾列出的方法。
  • 是的,从技术上讲,两者都可以工作,但一种方法是正确的方法,另一种方法是非常糟糕的方法。它会在代码中造成混乱和不连贯。请看在上帝的份上,千万不要对菜单项使用这种方法。
  • @LuckyMe 为什么?这是典型的命令绑定。 .NET 开发人员一直都在这样做:)
【解决方案2】:

在我看来

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    add_btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            onCreateDialog(getTaskId());
        }
    });
}


<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
<item android:id="@+id/action_settings" android:title="@string/action_settings"
    android:orderInCategory="100" app:showAsAction="never" />
<item android:id="@+id/add_text_id" android:title="Add"
    android:icon="@drawable/ic_add_btn"
    android:orderInCategory="100" app:showAsAction="ifRoom" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-31
    • 2015-12-17
    • 1970-01-01
    • 2014-03-10
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多