0

変数が null かどうかをテストするアプリがあります。null の場合、変数を設定するダイアログ ボックスが表示されます。問題は、ボックスが表示されている間もアクティビティが実行され続けることです。アクティビティをハングさせ、ダイアログ ボックスの結果を待ってから再開したいと思います。どうすればこれを達成できますか?

if(nfcscannerapplication.getCompId() == null || 
                                   nfcscannerapplication.getCompId().trim().equalsIgnoreCase("null")){ 
            Log.e(TAG, "compid null***********");
            showPasswordDialogBox();



        }else{

            Log.e(TAG, "compid not null***********");
            String[] paramsCompOpt = new String[]{nfcscannerapplication.getCompId()};
            AsyncGetCompanyOptions agco = new AsyncGetCompanyOptions();
            agco.execute(paramsCompOpt);

        }
4

2 に答える 2

1

次のようなものを試してください:

 preMethod() {
        // Your actual code...
        if(nfcscannerapplication.getCompId() == null || nfcscannerapplication.getCompId().trim().equalsIgnoreCase("null")){ 
                    Log.e(TAG, "compid null***********");


                // Call postMethod() once the variable is set in the Dialog box**
                showPasswordDialogBox();

            } else{

                Log.e(TAG, "compid not null***********");
                String[] paramsCompOpt = new String[]{nfcscannerapplication.getCompId()};
                AsyncGetCompanyOptions agco = new AsyncGetCompanyOptions();
                agco.execute(paramsCompOpt);

                postMethod();    
            }
}

postMethod() {
  // Code to execute when the variable is set
 ...
}
于 2012-10-22T22:43:57.420 に答える
0

変数を設定する必要があるコードをプライベート メソッドに入れることができます。次に、変数が適切に初期化されている場合は、そのメソッドを呼び出します。または、適切に初期化されていない場合は、ダイアログを表示し、on close ハンドラーでプライベート メソッドを呼び出します。

于 2012-10-22T16:27:17.657 に答える