如何以编程方式触发/点击Android中的MenuItem?

前端之家收集整理的这篇文章主要介绍了如何以编程方式触发/点击Android中的MenuItem?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在menu_main.xml中有这些菜单
<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_restart" android:title="Restart"
        android:orderInCategory="1" />
    <item android:id="@+id/action_clear" android:title="Clear"
        android:orderInCategory="2" />
    <item android:id="@+id/action_update" android:title="Update"
        android:orderInCategory="3" />
    <item android:id="@+id/action_about" android:title="About"
        android:orderInCategory="4" />
    <item android:id="@+id/action_try_restart" android:title="Try Restart"
        android:orderInCategory="5" />
</menu>

我在我的onOptionsItemSelected方法中有这个:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button,so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    if (id == R.id.action_restart) {
        Toast.makeText(MainActivity.this,"Restart...",Toast.LENGTH_LONG).show();
    }

    if (id == R.id.action_clear) {
        Toast.makeText(MainActivity.this,"Clear...",Toast.LENGTH_LONG).show();
    }

    if (id == R.id.action_update) {
        Toast.makeText(MainActivity.this,"Update...",Toast.LENGTH_LONG).show();
    }

    if (id == R.id.action_about) {
        Toast.makeText(MainActivity.this,"About...",Toast.LENGTH_LONG).show();
    }

    if(id == R.id.action_try_restart) {
        // how to click / trigger the "action_restart" from here?
    }

    return super.onOptionsItemSelected(item);
}

我试过:

MenuItem actionRestart = (MenuItem) findViewById(R.id.action_restart);
actionRestart; //

但是actionRestart引用不提供任何类似的点击,触发器等.

我也想注意到,我是Android开发的新手,我来自PHP / JavaScript背景,所以这个级别的Java OOP对我而言都是新的.

@H_301_17@解决方法
据我所知,SDK中没有机制可以让你这样做.做这样的事情当然不是标准做法.

我建议尽可能地将逻辑与实际的UI进行去耦,因此最终不需要模拟一个点击来触发动作.既然你是一个Web开发人员,这对你而言应该是相当容易的.

在这种情况下,您需要将Toast重构为单独的方法(或多个方法),然后在菜单项被单击时以及何时要手动触发时调用.

或者,您可以尝试使用findViewById()返回的MenuItem并将其传递给您的处理程序.但是我不知道这是否会工作.

原文链接:https://www.f2er.com/android/311103.html

猜你在找的Android相关文章