Android:以编程方式更新菜单项会导致NullPointerException

skdhfgeq2134

我工作的一个RecylcerViewCardView卡中包含ImageView。我也有一个声明为动作的菜单项,其标题设置为0。我要实现的是,当我单击图像时,其位置应添加到数组中,菜单项的标题应添加到数组中是数组的大小。

以下是我的menu.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_down_list" 
      android:title="@string/action_down_list"
      android:orderInCategory="100" 
      app:showAsAction="withText|always" 
      android:icon="@drawable/ic_action_download" />
</menu>

下面是运行onClickListner代码的Adapter类代码:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
    List<String> abc = new ArrayList<String>();
    ...      
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        ...
        viewHolder.imgView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                String img_id = images.get(viewHolder.getAdapterPosition());
                MenuItem dl_menu = (MenuItem) view.findViewById(R.id.action_down_list);

                abc.add(img_id);
                dl_menu.setTitle(Integer.toString(abc.size()));

                return true;
            }
        });
    }
}

但是,当我运行我的程序时,它给出一个java.lang.NullPointerException我有不同的方法,但仍然没有解决方案。

斯捷潘戈

问题出在这一行。

MenuItem dl_menu = (MenuItem) view.findViewById(R.id.action_down_list);

您试图在视图中找到一个没有菜单项的菜单。没有简单的方法可以从适配器访问菜单。

在这种情况下,最简单的方法是在适配器中创建菜单的设置方法,

public void setMenu(Menu menu){
   this.menu = menu;
}

并在onCreateOptionsMenu回调中为适配器调用它,请确保适配器在初始化之前已初始化。之后,您可以编写:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
   List<String> abc = new ArrayList<String>();
   Menu menu;
   ...      
   @Override
   public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
     ...
     viewHolder.imgView.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View view) {
                String img_id = images.get(viewHolder.getAdapterPosition());
                MenuItem dl_menu = menu.findItem(R.id.action_down_list);

                abc.add(img_id);
                dl_menu.setTitle(Integer.toString(abc.size()));

                return true;
            }
        });

但是从我的角度来看,一种首选的方式是使用诸如LocalBroadcastManager之类的工具向Activity或Fragment发送一个包含信息的意图,该意图应该通过菜单项来完成。因此,适配器将无法直接访问菜单。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:以编程方式更新菜单项会导致NullPointerException

来自分类Dev

Android,以编程方式更改菜单项的标题

来自分类Dev

以编程方式删除弹出菜单项

来自分类Dev

在Android中以编程方式触发动作栏菜单项

来自分类Dev

以编程方式更改菜单项在android中不起作用

来自分类Dev

在Android中以编程方式触发动作栏菜单项

来自分类Dev

以编程方式触发Eclipse插件菜单项?

来自分类Dev

如何以编程方式隐藏导航抽屉菜单项?

来自分类Dev

在Android中使用可绘制资源以编程方式将图标设置为导航抽屉菜单项始终为黑色

来自分类Dev

如何以编程方式将子菜单项添加到新的材质设计android支持库

来自分类Dev

如何在剑道菜单中以编程方式选择菜单项

来自分类Dev

如何以编程方式而不是菜单xml将子菜单项添加到NavigationView

来自分类Dev

为什么Android Action菜单项不更新

来自分类Dev

从右到左菜单项Android

来自分类Dev

长按 Android 菜单项?

来自分类Dev

WordPress会创建菜单项吗?

来自分类Dev

搜索菜单项快捷方式

来自分类Dev

以编程方式自定义弹出菜单项中的文本

来自分类Dev

从以编程方式创建的UITextView IOS中删除“复制”菜单项

来自分类Dev

我现在已经以编程方式添加了菜单项,如何对其执行操作

来自分类Dev

以编程方式启用菜单项(及其所有父项)-Delphi

来自分类Dev

从以编程方式创建的UITextView IOS中删除“复制”菜单项

来自分类Dev

以编程方式自定义 C# WPF 中的上下文菜单项

来自分类Dev

为什么输出菜单项会导致布尔输出?(WordPress的)

来自分类Dev

以编程方式将 MS Access DB 文件中的子菜单项添加到菜单条

来自分类Dev

带图标的Android菜单项

来自分类Dev

Android菜单项从未膨胀过

来自分类Dev

android:菜单项单击事件从片段

来自分类Dev

Android添加单个菜单项ActionListener

Related 相关文章

  1. 1

    Android:以编程方式更新菜单项会导致NullPointerException

  2. 2

    Android,以编程方式更改菜单项的标题

  3. 3

    以编程方式删除弹出菜单项

  4. 4

    在Android中以编程方式触发动作栏菜单项

  5. 5

    以编程方式更改菜单项在android中不起作用

  6. 6

    在Android中以编程方式触发动作栏菜单项

  7. 7

    以编程方式触发Eclipse插件菜单项?

  8. 8

    如何以编程方式隐藏导航抽屉菜单项?

  9. 9

    在Android中使用可绘制资源以编程方式将图标设置为导航抽屉菜单项始终为黑色

  10. 10

    如何以编程方式将子菜单项添加到新的材质设计android支持库

  11. 11

    如何在剑道菜单中以编程方式选择菜单项

  12. 12

    如何以编程方式而不是菜单xml将子菜单项添加到NavigationView

  13. 13

    为什么Android Action菜单项不更新

  14. 14

    从右到左菜单项Android

  15. 15

    长按 Android 菜单项?

  16. 16

    WordPress会创建菜单项吗?

  17. 17

    搜索菜单项快捷方式

  18. 18

    以编程方式自定义弹出菜单项中的文本

  19. 19

    从以编程方式创建的UITextView IOS中删除“复制”菜单项

  20. 20

    我现在已经以编程方式添加了菜单项,如何对其执行操作

  21. 21

    以编程方式启用菜单项(及其所有父项)-Delphi

  22. 22

    从以编程方式创建的UITextView IOS中删除“复制”菜单项

  23. 23

    以编程方式自定义 C# WPF 中的上下文菜单项

  24. 24

    为什么输出菜单项会导致布尔输出?(WordPress的)

  25. 25

    以编程方式将 MS Access DB 文件中的子菜单项添加到菜单条

  26. 26

    带图标的Android菜单项

  27. 27

    Android菜单项从未膨胀过

  28. 28

    android:菜单项单击事件从片段

  29. 29

    Android添加单个菜单项ActionListener

热门标签

归档