gpt4 book ai didi

java - 错误 - 使用 DrawerLayout 的 Android 应用程序中出现 NullpointEException

转载 作者:行者123 更新时间:2023-12-02 04:24:44 25 4
gpt4 key购买 nike

我试图在 android studio 中创建一个简单的 Material 设计界面。我在打开抽屉的特定行遇到错误。一旦我单击操作栏(工具栏)中的主页图标,应用程序就会崩溃。

这是我尝试过的代码。

public class MainActivity extends AppCompatActivity  {

public DrawerLayout mDrawerLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

android.support.v7.widget.Toolbar toolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
android.support.v7.app.ActionBar actionBar = getSupportActionBar();
actionBar.setHomeAsUpIndicator(R.drawable.ic_menu);
actionBar.setDisplayHomeAsUpEnabled(true);

DrawerLayout mDrawerLayout;
mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);

FloatingActionButton fab = (FloatingActionButton)findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(findViewById(R.id.drawer_layout), "I'm a Snackbar", Snackbar.LENGTH_LONG).setAction("Action", new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, "Snackbar Action", Toast.LENGTH_LONG).show();
}
}).show();
}
});
}



@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();

switch (id) {
case android.R.id.home:
mDrawerLayout.openDrawer(GravityCompat.START);
return true;
case R.id.action_settings:
return true;
}

return super.onOptionsItemSelected(item);
}

}

我尝试更改 FAB 和 Home Icon 的操作,效果很好!但在使用主页图标正常打开抽屉时,我收到以下错误。

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.widget.DrawerLayout.openDrawer(int)' on a null object reference
at jani.jigar.designdemo.MainActivity.onOptionsItemSelected(MainActivity.java:67)

我见过同样的情况,但他们没有初始化对象。我一开始就这么做了。我找不到错误。任何帮助将不胜感激。

最佳答案

发生这种情况是因为您在 onCreate 方法中使用局部变量为 Activity 的实例变量 mDrawerLayout 别名。由于 Java 中的作用域是从内到外的,因此您永远不会在方法外部设置 mDrawerLayout 的引用。因此,要解决问题,您所需要做的就是从 onCreate 中删除 DrawerLayout mDrawerLayout;

关于java - 错误 - 使用 DrawerLayout 的 Android 应用程序中出现 NullpointEException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com