0

ダイアログ ボックスが実行されている間、メイン アクティビティを待機させたい。this.wait();メインアクティビティで試しましたが、例外が発生します。これはすべて頭に浮かんだので、助けを求めるためにここにいます:)。事前に感謝します

public class MyDailogTestActivity extends Activity {
    /** Called when the activity is first created. */
    String Xvalue,Yvalue;
    TextView TextViewString;    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button ShowDialog = (Button) findViewById(R.id.ShowDialog);
        TextViewString = (TextView) findViewById(R.id.ShowDialogText);      
        ShowDialog.setOnClickListener(new OnClickListener(){
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                Dialog MyDialog = MyDailog();
                MyDialog.show();
                // I WANT THIS TO EXECUTE AFTER BELOW MENTIONED CODE
                TextViewString.setText(Xvalue + Yvalue);
            }

        });
    }

    private Dialog MyDailog(){
        LayoutInflater factory = LayoutInflater.from(this);
        final View textEntryView = factory.inflate(R.layout.my_dialog, null);
        return new AlertDialog.Builder(MyDailogTestActivity.this)
        .setTitle("Enter Value")
        .setView(textEntryView)
        .setPositiveButton("Oky", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                // THIS TO BE EXECUTE FIRST       
                Xvalue = "This ";
                Yvalue = "and That";                
                /* User clicked OK so do some stuff */
            }
        })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                /* User clicked cancel so do some stuff */
            }
        })
        .create();        
    }

}

これは、実行中のこのプロジェクトの画像です

http://imageshack.us/photo/my-images/220/11696639.jpg/ この画像では、Hello World が変更されていないことがわかります。hello world TextView の変更を反映しようとしています。

http://imageshack.us/photo/my-images/338/27833231.jpg/ 今この画像で。[ダイアログを表示] を押すと、値 null を表示する次のコードの実行がTextViewString.setText(Xvalue + Yvalue); 続行されます。このコードによって Xvalue と Yvalue の値が "This n That" になるコードがダイアログ ボックスで終了するまで待機する必要があります。

Xvalue = "This ";
Yvalue = "and That";  
4

2 に答える 2

2

次の行を移動します。

TextViewString.setText(Xvalue + Yvalue);

次のような肯定的なボタンクリックリスナーに:

public void onClick(DialogInterface dialog, int whichButton) {
    // THIS TO BE EXECUTE FIRST    
    Xvalue = "This ";
    Yvalue = "and That";                
    /* User clicked OK so do some stuff */
    TextViewString.setText(Xvalue + Yvalue);
}
于 2012-04-20T18:34:55.240 に答える
0

あなたがやろうとしていることができるかどうかはわかりませんが、標準だと思う代替案を提案できます。タイプのリスナーを作成し、DialogInterface.OnDismissListenerを使用してダイアログに設定しますsetOnDismissListener()。このリスナーは、ダイアログを閉じたときに呼び出されます。

または、重いロジックがない場合は、ティムが提案したようにダイアログに直接配置できます。

于 2012-04-20T18:49:25.403 に答える