TextView setText AlertDialog延迟了

时间:2014-07-25 20:52:16

标签: android alertdialog

我正在处理一个活动,该活动在布局中包含可单击的TextView。 onClick方法激活打开一个警告对话框,其中包含TextView的可能值(3个不同的可能值(0),(1),(2))。 (必须使用AlertDialog来获取值,Spinner不起作用)。 int BUSselection在程序开始时声明为-1。

public void showStartingDialog(){
        DialogFragment dialog = new StartingDialogFragment();
        dialog.show(getFragmentManager(), "StartingDialogFragment");
    }
    public void onBUSDialogSelect(DialogFragment dialog, int which)
    {BUSselection = which;}

public void changeStarting(View v) //OnClick method
{
     showStartingDialog();
     TextView basic = (TextView)findViewById(R.id.startingBox);
     if(BUSselection==0)
     {
         basic.setText("0");
     }
     else if (BUSselection ==1)
     {
         basic.setText("1");
     }
     else if (BUSselection ==2)
     {
         basic.setText("2");
     }
     else
     {

     }
}

基本上这个程序应该在AlertDialog中选择List的选项(" 0"在0位," 1"在位置1," 2&# 34;在位置2)并将这些值放入TextView。但是,我的问题是,当我选择位置1时,1才会出现在TextView中,直到我再次单击(警报对话框再次显示)。我做错了什么?

2 个答案:

答案 0 :(得分:0)

如果没有看到更多代码,我最好的猜测是你可以通过调用invalidate()来强制TextView更新。

例如:

TextView basic = (TextView) v.findViewById(R.id.startingBox);
.
.
basic.setText("1");
.
.
v.invalidate();  // forces view to refresh its components

请注意,v必须引用包含TextView的视图。

答案 1 :(得分:0)

我认为您的问题是showStartingDialog()在对话框完成之前返回。 调用后的行应放入onBUSDialogSelect()方法。

这样的事情:

public void showStartingDialog() {
    DialogFragment dialog = new StartingDialogFragment();
    dialog.show(getFragmentManager(), "StartingDialogFragment");
}

public void onBUSDialogSelect(DialogFragment dialog, int which) {
    BUSselection = which;
    TextView basic = (TextView)findViewById(R.id.startingBox);
    if(BUSselection==0) {
         basic.setText("0");
    } else if (BUSselection ==1) {
         basic.setText("1");
    } else if (BUSselection ==2) {
         basic.setText("2");
    } else {

    }
}

// OnClick method
public void changeStarting(View v) {
     showStartingDialog();
}