OnOptionsItemSelected不能在android API 19上运行(但适用于android 24)

时间:2018-02-07 03:11:17

标签: java android

我的活动类

中有以下代码
public class admin_fab_features_grid extends 
 base_activity_for_admin_home_page implements Parcelable {


@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    activity_context = getApplicationContext();

    Intent iIntent= getIntent();
    Bundle b = iIntent.getExtras();

    // display the admin_fab_features_grid that contain the dashboard list of all the admin options
    setContentView(R.layout.admin_fab_features_grid);


    Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_toolbar);
    setSupportActionBar(toolbar);
 }

base_activity_for_admin_home_page.java具有以下代码

public class base_activity_for_admin_home_page extends AppCompatActivity  {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Log.d(Tag, " Into base activity for parent menu");
    _context = getApplicationContext();

    // display the admin_fab_features_grid that contain the dashboard list of all the admin options
    setContentView(R.layout.admin_fab_features_grid);

    Toolbar toolbar = (Toolbar) findViewById(R.id.app_bar_toolbar);
    setSupportActionBar(toolbar);

}



@Override
public boolean onCreateOptionsMenu(Menu menu) {

    super.onCreateOptionsMenu(menu);

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_admin_home_page, menu);

    Log.d(Tag, "inflate done");




    return true;
}


@Override
public boolean onOptionsItemSelected(MenuItem item) {

 switch (item.getItemId()) {

        case R.id.actionbar_settings:
            return true;

    }

  }


 }

menu_admin_home_page包含以下xml

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

<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=".MyActivity">



 <item android:id="@+id/actionbar_settings"
    android:title="@string/actionbar_settings"
    android:orderInCategory="100"
    app:showAsAction="never" />
 <!--
    <item android:id="@+id/actionbar_dropoff"
        android:title="@string/actionbar_dropoff"
        android:orderInCategory="90"
        app:showAsAction="never" />

    <item android:id="@+id/actionbar_signin"
        android:title="@string/actionbar_signin"
        android:orderInCategory="85"
        app:showAsAction="never" />
-->
<item android:id="@+id/actionbar_logout"
    android:title="@string/actionbar_logout"
    android:orderInCategory="80"
    app:showAsAction="never" />


</menu>

&#34;设置&#34;菜单已在工具栏中启用。我可以看到&#34;:&#34;在工具栏中。在具有Android API24的设备上,我可以单击它,并调用OnOptionsItemSelected函数。但是,在具有Android API 19 OnOptionsItemSelected的设备上的相同应用程序不会被调用。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:0)

onOptionsItemSelected()更改为此并尝试

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.actionbar_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:0)

由于您将showAsAction属性设置为never,因此这些菜单项永远不会显示为操作视图。试试这个:

showAsAction = ifRoom | withText

switch (item.getItemId()) { 
 case R.id.actionbar_settings: 
     doyouraction();
     return true;

 default:        return super.onOptionsItemSelected(item); 
  } }

答案 2 :(得分:0)

疼痛4天后解决了。

发生的事情是CoordinatorLayout将GridView覆盖在工具栏的顶部,这就是为什么没有调用onOptionsItemSelected图标的原因。他们被封锁了。工具栏不像操作栏那样叠加在GridView的顶部。它本身就是一种观点。为了解决这个问题,我删除了CoordinatorLayout,在工具栏中添加了一个id,然后添加了android:layout_below =“@ id / toolbar”。

Function CM(r As Range, c As Range, d As Range) As Integer
    Dim lR As Long

    CM = 0

    For lR = d.Rows.Count To 2 Step -1
        If Application.CountIf(d.Rows(lR), r) > 0 And Application.CountIf(d.Rows(lR - 1), c) > 0 Then CM = CM + 1
    Next lR
End Function