我有一個內部靜態類,它在我的主Activity中擴展了線程。在這個線程中,我需要從我的主Activity調用一個非靜態方法。調用非靜態方法int靜態類
依我之見,我有兩個選擇:
- 讓我非靜態方法靜態:此選項不會是這種方法裏面可行,因爲我打電話startActivityForResult,我不能在靜態調用此辦法。
在內部靜態類中創建主Activity的對象,並通過此對象調用方法。
MainActivity mActivity = new MainActivity(); //... mActivity.method();
我現在使用的一個是第二,但我有一個疑問。如果我這樣做,我明白我正在創建一個MainActivity的新實例,並且執行此操作時,onCreate方法中的所有定義都稱爲?或者我只是調用方法,我在裏面使用的變量將爲空?
更新 -
這是內部類,我需要調用從主要的方法。我需要這是靜態的,因爲應用程序的基本功能需要它這樣。現在我介紹的主要活動的新方法,當一個動作的線程中發生時必須調用:
private static final class DetectionThread extends Thread {
//...
public DetectionThread(byte[] data, int width, int height) {
}
@Override
public void run() {
//DO STUFF HERE
//Action happens and calls the method from main activity:
SpeechWhenMotion();
//...
}
}
}
這是在主要活動中定義的方法的頭。裏面的是我打電話給這對於結果開始活動的另一種方法,所以這就是爲什麼我不能設置方法爲靜態的原因:
public void SpeechWhenMotion() {
//...
}
發佈代碼將解釋更多。 –
您不會因爲您將您的方法編碼爲靜態而您不決定使用static關鍵字,反之亦然。看看你是否可以改變你的設計,並思考一下你的邏輯是否在不同實例之間變化,或者始終保持靜態。 – prabugp
內部靜態類如果內部類應該使用外部類的非靜態方法,那麼它看起來應該不是靜態的。你可以添加一些你的設計決定的解釋嗎? – Pshemo