Java 想要Android中的程序化方法吗

Java 想要Android中的程序化方法吗,java,android,multithreading,Java,Android,Multithreading,执行对话框时,我希望主活动等待。我尝试了this.wait()在主活动中,但它给出异常。这都是我的想法,所以我在这里寻求帮助:)。先谢谢你 任何帮助都将不胜感激 public class MyDailogTestActivity extends Activity { /** Called when the activity is first created. */ String Xvalue,Yvalue; TextView TextViewString;

执行对话框时,我希望主活动等待。我尝试了
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();        
    }

}
这是执行此项目时的图像

在此图像中,您可以看到Hello World未更改。我试图在hello world TextView中反映这一变化

现在在这幅图中。当我点击show对话框时,它将继续执行下一个代码
TextViewString.setText(Xvalue+Yvalue)
其中显示值null
现在我想让它等待对话框完成代码,其中Xvalue和Yvalue的值为“thisnother”

Xvalue = "This ";
Yvalue = "and That";  
移动此行:

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);
}

我不确定你是否能做你想做的事,但我可以建议一个替代方案,认为这是一个标准。创建一个类型为
DialogInterface.OnDiskListener
的侦听器,然后使用
SetOnDiskListener()
将其设置为您的对话框。关闭对话框时将调用此侦听器


或者,如果您没有任何繁重的逻辑,您可以像Tim建议的那样直接将其放入对话框。

show()
不是阻塞调用。意思是?请详细说明:)感谢您考虑这个问题:)对话框上的
show()
方法不是阻塞调用。调用
show()
之后的语句将立即继续执行。实际上,
show()
并没有显示对话框,而是将请求放在工作队列上,由主应用程序线程管理,最终将显示对话框。值得注意的是,在调用
show()
返回的
onClick()方法之后,对话框才会出现。这种异步工作称为“事件驱动编程”,在过去四分之一世纪左右的时间里,大多数高质量的UI都在使用它。请按照Tim告诉你的去做。我有没有办法让程序控制对话框,直到对话框结束,然后它会再次将控制权返回到onclick方法?没有。请按照Tim告诉你的去做。很好,但这不是我正在寻找的解决方案。我希望主要活动等待对话框完成:)。。谢谢你的回答:)你说的等等是什么意思?它将等待。onClickListener是onCreate()中完成后的最后一条语句。在(A)对话框按钮侦听器获得回调,或(B)另一个生命周期方法(如onPause())被系统调用之前,活动不会运行任何代码。对,但活动不会等待对话框完成。它创建一个新线程,在其中执行对话框,同时在onCreat中执行代码。尝试运行代码。。您将看到我应该添加执行图像吗?我想但是stackoverflow没有让meIs知道你的活动中有比你发布的更多的代码?你发布的代码中绝对没有任何东西会启动新线程…不,这是代码。。。我还没有发布Main.xml和MyDialog.xml的代码。。我是否应该??正如我在上面的评论中所说,我希望主活动等待对话框完成:)。我创建了这个测试项目,但我还有一个我正在开发的主项目,我需要这样的执行。如果不能做到这一点,我当然会用另一种方法来实现我的逻辑,但我相信会有办法做到这一点