ActionBar后退按钮崩溃我的应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ActionBar后退按钮崩溃我的应用程序相关的知识,希望对你有一定的参考价值。

当我想使用后退按钮形式操作栏回到我的CurentCourseActivity时,我的学校项目有问题我有NE

Attempt to invoke virtual method 'java.util.List `com.example.pingu.mylanguages.Language.getList()' on a null object reference at 
com.example.pingu.mylanguages.CurentCourseActivity.onCreate(CurentCourseActivity.java:37)`

虽然我使用正常的后退按钮问题没有出现。当我们选择来自LessonGridView进行新活动时。当我们从ActionBar选择后退按钮时,我有NE。

CourentCourseActivity:

public class CurentCourseActivity extends AppCompatActivity {
    private Language language;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d("s","onCreate");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_curent_course);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        if (savedInstanceState!=null){
           language = (Language) savedInstanceState.getSerializable("Lang");
            Log.d("xx","Coś ma");
        }

        if (getIntent().getExtras() != null) {
            language = (Language) getIntent().getSerializableExtra("Lang"); //Obtaining data
        }


        GridView grid = (GridView) findViewById(R.id.grid);
        CurrentCourseAdapter adapter = new CurrentCourseAdapter(this, R.layout.grid_item_curent_course, language.getList());
        grid.setAdapter(adapter);

        grid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent = new Intent(CurentCourseActivity.this,LessonActivity.class);
                intent.putExtra("Lesson",(Lesson)language.getList().get(i));
                startActivity(intent);
            }
        });


        getSupportActionBar().setTitle(language.getName());
    }

}

LessonActivity:

public class LessonActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_lesson);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        if(getIntent().getExtras()!=null){
            Lesson lesson = (Lesson) getIntent().getSerializableExtra("Lesson");
            getSupportActionBar().setTitle(lesson.getNamel());
        }

    }
}
答案

答案是最简单的,然后我期待。因此我需要覆盖此按钮并将其作为正常的后退按钮执行,因为ActionBar后退按钮会破坏父活动。

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {

case android.R.id.home:
    onBackPressed();
    return true;
}

return super.onOptionsItemSelected(item);
}

以上是关于ActionBar后退按钮崩溃我的应用程序的主要内容,如果未能解决你的问题,请参考以下文章

如何在带有更多片段的操作栏上添加后退按钮

Android Studio:如何从 Fragment 在 ActionBar 中实现后退按钮

应用ActionBar中的返回按钮

覆盖片段中的后退按钮

带有片段的 Android Up 按钮未显示完整片段

在 webview 片段中实现后退按钮