Java 登录+;导航抽屉
当我登录课堂并调用带有导航抽屉的活动_Main时,无法导航菜单。当我通过活动启动应用程序时,主导航抽屉工作正常 错误: 方法调用'drawer.setDrawerListener(toggle)'可能会产生'java.lang.NullPointerException'更少。。。(Ctrl+F1) 此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态证明其值为常量的表达式,以及可能导致违反可空性契约的情况。 标记为@Nullable或@NotNull的变量、方法参数和返回值被视为Nullable(或NotNull),并在分析期间用于检查nullability契约,例如报告可能的NullPointerException错误。 可以使用@Contract annotation定义更复杂的合同,例如: @Contract(,null->null”)-如果其第二个参数为null,则该方法返回null@Contract(,null->null;551;,!null->!null”)-如果其第二个参数为null,则该方法返回null,否则@Contract(“true->fail”)-一个典型的assertFalse方法,如果将true传递给它,则会引发异常 可以将检查配置为使用自定义@Nullable @NotNull注释(默认情况下,将使用annotations.jar中的注释)“setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener)”是不推荐使用的注释。。。(Ctrl+F1) 此检查报告指定检查范围中使用了不推荐的代码的位置 登录 主要活动 公共类MainActivity扩展了AppCompatActivity 实现NavigationView.OnNavigationItemSelectedListener{Java 登录+;导航抽屉,java,android,login,Java,Android,Login,当我登录课堂并调用带有导航抽屉的活动_Main时,无法导航菜单。当我通过活动启动应用程序时,主导航抽屉工作正常 错误: 方法调用'drawer.setDrawerListener(toggle)'可能会产生'java.lang.NullPointerException'更少。。。(Ctrl+F1) 此检查分析方法控制和数据流,以报告始终为真或假的可能条件,静态证明其值为常量的表达式,以及可能导致违反可空性契约的情况。 标记为@Nullable或@NotNull的变量、方法参数和返回值被视为Nul
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);
FragmentManager fm = getFragmentManager();
fm.beginTransaction().replace(R.id.content_frame, new MainFragment()).commit();
}
此日志仅说明导航抽屉可能为空,如果提供的id未找到它,则它将生成空指针异常 如果你插入
if(drawer != null){
drawer.setDrawerListener(toggle)
}
或
日志中的此警告将消失,但实际上不需要此空指针检查
日志的第二部分指出,您使用了不推荐使用的方法
android.support.v4.widget.DrawerLayout.setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
要解决这个问题,请轻松拨打电话
drawer.addDrawerListener(toggle);
<强>但是所有这些都不是必需的!你的应用程序也会运行,如果你保持所有的原样,这些改变只会删除日志警告!< /强>
这个问题还不清楚。请考虑编辑它来清楚地陈述一个特定的问题并显示你试图解决这个问题的代码。谢谢,但是我试过了,但没用,我想问题出在“切换”上。当我打电话给屏幕时,屏幕上没有“汉堡包”菜单。(糟糕的英语)但是logcat警告已经不存在了,不是吗?android.support.v4.widget.DrawerLayout.setDrawerListener(android.support.v4.widget.DrawerLayout.DrawerListener);
drawer.addDrawerListener(toggle);