2016-04-24 5 views
0

Ich arbeite gerade an einer Android-App und arbeite mit der Serialisierung von Dateien. Ich habe eine Methode, die ein Java-Objekt in eine Datei serialisiert, die einen Context-Parameter verwendet. Ich kann ein gültiges Context-Objekt abrufen, wenn ich in einer anderen Klasse arbeite, aber wenn ich in dieser Klasse bin, die AppCompatActivity erweitert, bin ich mir nicht sicher, was ich tun soll. Ich habe versucht, getApplicationContext() zu verwenden, aber das gibt mir immer noch einen Nullwert für den Kontext.Verwenden von Kontext mit AppCompatActivity

Hier ist die Basis von dem, was ich bisher:

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); 
     } 
    }); 
} 
} 

Wie kann ich einen Nicht-Null-Wert für den Kontext erhalten, die ich in serialize passieren kann?

+0

Mögliche Duplikat http://stackoverflow.com/a/3572553/4357238 – Edward

Antwort

2

Sie rufen zuerst die Methode auf und dann initialisieren Sie die context. Ändern Sie es wie folgt aus:

context = BookView.this; 
setUpScreen(book); 
+0

Ich denke, das der Trick. Vielen Dank! Warum initialisiert der Kontext nach dem Ergebnis einen Nullwert, es sei denn, Sie tun es vorher? –