繁体   English   中英

单击消耗性菜单项时关闭导航抽屉的问题

[英]Issue in closing navigation drawer when click on Expendable menu item

当我尝试通过可扩展列表菜单项上的单击方法关闭导航抽屉时遇到问题。

这是导航抽屉的可扩展列表视图菜单的方法,其中菜单标题被绑定并且在子菜单项上单击 new MainActivity().closeDrawer() 被调用并引发错误。

 @Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    final String childData = (String) getChild(groupPosition, childPosition);

    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) this.mContext
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.list_submenu, null);
    }

    String[] str = childData.split("@");

    final TextView txtListChildTitle = convertView.findViewById(R.id.submenu);

    txtListChildTitle.setText(str[0]);
    txtListChildTitle.setTag(str[1]);

    txtListChildTitle.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            new MainActivity().closeDrawer();
            String tag = txtListChildTitle.getTag().toString();
            Intent i2 = new Intent(mContext, AllSubCategory.class);
            i2.putExtra("ID", tag);
            mContext.startActivity(i2);
        }
    });

    return convertView;
}

这是错误

2019-09-20 11:53:27.037 7717-7717/com.techabilit.readerchoice E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.techabilit.readerchoice, PID: 7717
java.lang.NullPointerException: Attempt to invoke virtual method 'void androidx.drawerlayout.widget.DrawerLayout.closeDrawer(int)' on a null object reference
    at com.techabilit.readerchoice.Activities.MainActivity.closeDrawer(MainActivity.java:821)

这是 MainActivity.java:821 的关闭抽屉方法

public void closeDrawer() {

    drawer.closeDrawer(GravityCompat.START);

}

请帮我关闭导航菜单子项的 onClick 的抽屉。

问题就在这里。

new MainActivity().closeDrawer();

用。。。来代替

((MainActivity)mContext).closeDrawer();

每次单击该项目时,您都在创建MainActivity的新实例。 取而代之的是,您可以将mContext转换为MainActivity并调用closeDrawer()

new mainActivity() 将创建另一个 class 实例,这与您正在工作的实例不同,因此请尝试一次,请尝试context.closeDrawer();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM