方法调用'setDisplayHomeAsUpEnabled'可能会产生'java.lang.NullPointerException

Def*_*fus 1 android

为什么这行会产生NullPointerException?

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Run Code Online (Sandbox Code Playgroud)

我在build.grade中导入了android.support.v7.app.AppCompatActivity我正在使用com.android.support.design:25.0.1

public class PhotosActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.photos_activity);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        if (id == android.R.id.home) {
            // finish the activity
            onBackPressed();
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:http://pastebin.com/aCQ4Hvpi

Nic*_*kel 15

这个条件将修复该警告:

if (getSupportActionBar() != null) {

这就是我设置SupportActionBar的方法,也许这会有所帮助!

Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar_top);
    setSupportActionBar(myToolbar);
    if (getSupportActionBar() != null) {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setLogo(R.mipmap.ic_launcher);
        getSupportActionBar().setDisplayUseLogoEnabled(true);
    }
Run Code Online (Sandbox Code Playgroud)

  • @Defus,每当你看到这样的警告(这不是错误)时,就意味着你应该有一个无效检查的机制.这是一个皮棉警告. (3认同)