registerForContextMenu выдает исключение нулевого указателя, когда menu_item передается в виде - PullRequest
0 голосов
/ 14 января 2020

Когда я щелкаю пункт меню, я хочу сгенерировать context menu с опциями, которые пользователь может выбрать. Но его бросок null pointer exception.

# 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="com.bremachitra.mynotepad.MainActivity">
 <item
        android:id="@+id/action_view"
        android:title="View"
        app:actionViewClass="android.widget.ImageButton" />
</menu>

MainActivity. java

    if(id == R.id.action_view)
     { 
        ImageButton viewButton = (ImageButton) findViewById(R.id.action_view);
         registerForContextMenu(viewButton);
            }

     @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            Toast.makeText(this,"context",Toast.LENGTH_SHORT).show();
            getMenuInflater().inflate(R.menu.menu_view,menu);
        }



      @Override
        public boolean onContextItemSelected(MenuItem item) {

            switch(item.getItemId())
            {
                case R.id.action_grid:
                Toast.makeText(this,"grid view",Toast.LENGTH_SHORT).show();
                return true;
                case R.id.action_list:
                Toast.makeText(this,"List view",Toast.LENGTH_SHORT).show();
                    return true;

                default:
                    return super.onContextItemSelected(item);

            }

1 Ответ

0 голосов
/ 14 января 2020

ваша ошибка для просмотра изображений. Вы не можете напрямую получить доступ к источнику меню. Вы должны использовать inflater (или menuInflater) или объект Menu:

viewButton = (ImageButton) menu.findViewById (R.id.action_view);

Эта ссылка является примером

поместить viewview в метод onCreateOptonsMenu () и использовать параметр меню для findViewById:

viewButton = (ImageButton) menu.findViewById (R.id.action_view);

...