Ich habe meine eigene Array-Adapter-Klasse namens WordAdapter definiert. Hier ist mein CodeWarum funktioniert getContext(), aber der über Konstruktor übergebene Kontext funktioniert nicht?
Context context;
int backgroundColor;
private MediaPlayer mMediaPlayer = null;
public WordAdapter(Context context, ArrayList<Word> words, int backgroundColor) {
super(context, R.layout.list_item, words);
this.context = context;
this.backgroundColor = backgroundColor;
}
private AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
Der obige Code erzeugt eine Nullzeiger Ausnahme.
Aber dieser Code nicht:
Context context;
int backgroundColor;
private MediaPlayer mMediaPlayer = null;
public WordAdapter(Context context, ArrayList<Word> words, int backgroundColor) {
super(context, R.layout.list_item, words);
this.context = context;
this.backgroundColor = backgroundColor;
}
private AudioManager audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
Warum wird der Kontext durch den Konstruktor übergeben nicht?
EDIT ich es in verschiedenen Aktivitäten aufrufen, wird eine davon unten angegeben:
itemsAdapter = new WordAdapter(this, words, R.color.category_numbers);
wo itemsAdapter
als WordAdapter
deklariert und words
eine Arraylist von Word
Klassenpositionen ist.
plz uns zeigen, wo Sie den Konstruktor – has19
Verschieben rufen 'Audio-Manager = (Audio-Manager) context.getSystemService (Context.AUDIO_SERVICE);' innerhalb Methode –
@ ρяσѕρєяK I definiert Kontext als globale Variable . Können Sie bitte (als Antwort) erklären, warum Ihre Methode funktionieren würde? –