0

これが私のコードです。ログ出力が ABC になることを期待しますが、A と B になるだけです。独自のイベント リスナーを実装する必要はありませんでしたが、何が問題なのかわかりません。これを機能させる方法についてのアイデアはありますか?

public class MyActivity extends Activity {
...
OnCompletedEvent listener;
...

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
}

public void ButtonPressed (View view){
    Log.d("LOG","A");
    longRunningTask();
    listener = new OnFinishedValidatingListener() {
    @Override
    public void onFinished() {
        // TODO Auto-generated method stub
        afterFinished();
    }
    };
}

public void longRunningTask(){
...
Log.d("LOG", "B");
}
public void afterFinished(){
...
Log.d("LOG", "C");
}
public static interface OnCompletedEvent {
    public void onFinished();
}
}
4

1 に答える 1

1

どこでも呼び出す必要はありません。たとえば、listener.onFinished()どこかで行う必要があります

また、タスクがすぐに終了する場合に備えて、「長時間実行タスク」の前にリスナーを作成する必要があります。そうしないと、リスナーが null になります

于 2013-11-08T20:55:14.447 に答える