android - 将 Context 与 AppCompatActivity 结合使用

标签 android android-context appcompatactivity

我目前正在开发一个 Android 应用程序,并处理序列化文件。我有一个方法可以将 Java 对象序列化为一个带有 Context 参数的文件。在另一个类中工作时,我可以检索一个有效的 Context 对象,但是当我在这个扩展 AppCompatActivity 的类中时,我不太确定该怎么做。我尝试使用 getApplicationContext() 但它仍然为我提供了空值的上下文。

这是我目前的基础:

public class BookView extends AppCompatActivity {

private static Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book);
    Book book = Browse.books.get(getIntent().getIntExtra("index", 0));
    Browse.book = book;
    setUpScreen(book);
    context = getApplicationContext();
}

private void setUpChapters(Book book){

    ListView chapters = (ListView) findViewById(R.id.chapters);
    ChapterAdapter adapter = new ChapterAdapter(this, R.layout.row, book.getChapters());
    chapters.setAdapter(adapter);

    if (context != null) {
        book.serialize(context);
    }
    else {
        System.out.println("Null bookview context");
    }

    chapters.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Intent myIntent = new Intent(getApplicationContext(), Reader.class);
            myIntent.putExtra("index", position);
            startActivity(myIntent);
        }
    });
}
}

如何获取可以传递给序列化的上下文的非空值?

最佳答案

您首先调用方法,然后初始化上下文。像这样改变它:

context = BookView.this;
setUpScreen(book);

关于android - 将 Context 与 AppCompatActivity 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36819197/

相关文章:

java - 在 ListView 中更改一个 EditText 会更改所有

android - Hilt 无法将 ContextImpl 转换为 Application

java - 上下文或 Activity 之外的 getString

android - 从 getContext() 或从构造函数获取上下文作为字段

android - 如何在操作栏的多个菜单项中同时显示图标和文本?

java - TabLayout 不显示

java - 使用 ExoPlayer 将 YouTube 直播视频 (DASH) 流式传输到 Android 应用

java - 使用 Jackson 对 HashMap<MyObject, List<Integer> 进行序列化和反序列化

android - AppCompatActivity 无法正常工作

android - 为什么我需要按两次后退按钮才能在第一次关闭 fragment ?