1

ProgressDialogを含むMyProgressDialogというアクティビティがあります。このScreenProgressDialogアクティビティは、メインアクティビティでインテントによって呼び出されます。

       if(msg.what == SET_PROGRESS){

            intent.putExtra("action", "set");
            ...

            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

            startActivity(intent);
        }
        else if(msg.what == SHOW_PROGRESS){             


            intent.putExtra("action", "show");
            ...

            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);

            startActivity(intent);              
        }
        else if(msg.what == HIDE_PROGRESS){

            intent.putExtra("action", "hide");

            intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

            startActivity(intent);

        }

MyProgressDialogアクティビティは次のとおりです。

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

    Log.e("screenPD", "spd created");

    extras = getIntent().getExtras();



    pd = new ProgressDialog(this);

    ...setting the pd...        

    pd.show();  

    Log.e("screenPD", "spd shown");
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    setIntent(intent);

    int newTitle = intent.getExtras().getInt("title");

    if (intent.getExtras().getString("action").equals("set")){
        pd.set methods...
        pd.show();

        Log.e("DialogSET", "DialogSET "+intent.getExtras().getInt("progress"));
    }
    else if (intent.getExtras().getString("action").equals("show")){
        pd.set methods...
        pd.show();

        Log.e("DialogSHOW", "DialogSHOW "+progress);

    }
    else if (intent.getExtras().getString("action").equals("hide")){
        pd.dismiss();
        this.finish();
        Log.e("DialogHIDE", "DialogHIDE");
        return;
    }
}

@Override
public void onDestroy() {
    super.onDestroy();
    Log.e("screenPD", "destroyed");     
}

そしてここにLogCatがあります:

DialogHIDE(2615): DialogHIDE
screenPD(2615): spd created
screenPD(2615): spd shown
screenPD(2615): destroyed

したがって、3番目のインテントが開始し、finish();を呼び出します。戻る; そして、新しいProgressDialogを表示するOnreateメソッドが開始されます。onDestroyが呼び出されますが、ProgressDialogは画面から非表示になりません。finish()メソッドの後、アクティビティsholdは閉じられます。問題はどこだ?ありがとうございました!

4

2 に答える 2

0

エラーはありません。メソッドの呼び出しfinish()は完了するまで実行され、完了後、コントロールはに戻ります。Android

于 2012-07-14T12:51:22.013 に答える
0

startactivityメソッドの後で、finish()を呼び出して現在のアクティビティを終了します。前のアクティビティを終了する新しいアクティビティを開始した後。

于 2012-07-14T13:00:27.427 に答える