我一直在想這個問題幾個小時,現在沒有找到解決方案。不過我想我只是忽略了一些非常簡單的事情。Android - Java - 從另一個實例類中訪問主活動中的私有變量
我的程序主要是記錄和回放音頻,所以我得到了一個主要活動,其中包含與用戶交互的所有功能,我有一個叫'AudioHandler'的類來管理所有的音頻內容在背景中。 主要活動使用AudioHandler的一個實例。
在AudioHandler類中,我得到了一個OnCompletionListener,用於注意錄製的音頻文件的播放何時完成。
問題是:當回放完成 - 並且OnCompletionListener被調用時,我想在主活動中更改ImageView(將暫停按鈕變成播放按鈕)。
如何從AudioHandler實例訪問Main-Activity中的ImageView?
...沒有將ImageView-Variable公開。
方法調用在主活動從AudioHandler玩法:
public State playRecording() {
//change play-button to stop-button
iPlay.setImageResource(R.drawable.stop_button_active);
//start or resume playback of the recorded Audio
ah.play();
//Return that the program is in playing-mode
return State.PLAYING;
}
播放功能AudioHandler
public void play() {
try {
mPlayer.start();
} catch (IllegalArgumentException e) {
Log.d("MEDIA_PLAYER", e.getMessage());
e.printStackTrace();
} catch (IllegalStateException e) {
Log.d("MEDIA_PLAYER", e.getMessage());
e.printStackTrace();
}
//add listener to notice when the end of the audio record has been reached
mPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
//should somehow change the ImageView 'iPlay' in the Main-Activity when reaching this point.
}
});
}
任何幫助表示讚賞:)
Marco
但是,如何在沒有主要活動的實際實例的情況下從另一個類訪問getter和setter? – MarcoSz 2011-04-25 21:02:53
您可以像創建一個Singleton一樣創建主要活動。讓我編輯我的答案。 – 2011-04-25 21:04:27
完成。請參閱最新的答案。 – 2011-04-25 21:06:23