我正在处理一个活动,该活动在布局中包含可单击的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中,直到我再次单击(警报对话框再次显示)。我做错了什么?
答案 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();
}