将 Context 与 AppCompatActivity 结合使用
Using Context with AppCompatActivity
我目前正在开发 Android 应用程序,并处理序列化文件。我有一个方法可以将 Java 对象序列化为一个带有 Context 参数的文件。在另一个 class 中工作时,我可以检索有效的 Context 对象,但是当我在扩展 AppCompatActivity 的 class 中时,我不太确定该怎么做。我尝试使用 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
。像这样更改它:
context = BookView.this;
setUpScreen(book);
我目前正在开发 Android 应用程序,并处理序列化文件。我有一个方法可以将 Java 对象序列化为一个带有 Context 参数的文件。在另一个 class 中工作时,我可以检索有效的 Context 对象,但是当我在扩展 AppCompatActivity 的 class 中时,我不太确定该怎么做。我尝试使用 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
。像这样更改它:
context = BookView.this;
setUpScreen(book);