在我的应用程序中,我需要从显示列表的AlertDialog中获取一个值。选择项目后,我更改按钮文本(显示AlertDialog的按钮),对话框被关闭,我需要在onResume()中进行处理。
但是onResume没有被调用,我得到了警告"Window already focused"。我想原因是我更改了对话框中的按钮文本,所以我已经在窗口中了。但我需要进入简历(à.如何做到这一点?
AlertDialog:
AlertDialog.Builder mBuilder = new AlertDialog.Builder(this);
mBuilder.setTitle("Type de l'observation");
mBuilder.setSingleChoiceItems(titles,-1, new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialogInterface, int item) {
mDescriptor.setmObservationValue(
mContext.getResources().getStringArray(R.array.post_values)[item]);
mObservationButton.setText(titles[item]);
dialogInterface.dismiss();
return;
}
});
mDialog = mBuilder.create();
onClick方法:public void onObservationClick(视图v){mDialog.show();}
和onResume():
@Override
protected void onResume() {
if(!mDescriptor.getmObservationValue().equals(""))
{
String value = mDescriptor.getFieldKey();
Log.v("VALUE : ",value);
if(value.equals("VentValue"))
{
mFieldLayout.setVisibility(View.VISIBLE);
mUnit.setText("km/h");
}
else if(value.equals("PluieValue"))
{
mFieldLayout.setVisibility(View.VISIBLE);
mUnit.setText("mm");
}
else if(value.equals("NeigeValue"))
{
mFieldLayout.setVisibility(View.VISIBLE);
mUnit.setText("mm");
}
else if(value.equals("TempValue"))
{
mFieldLayout.setVisibility(View.VISIBLE);
mUnit.setText("°C");
}
else if(value.equals("VisValue"))
{
mFieldLayout.setVisibility(View.VISIBLE);
mUnit.setText("m");
}
else
{
mFieldLayout.setVisibility(View.GONE);
mUnit.setText("");
}
}
看起来你是在强制调用onResume(),但你不能这样做。"活动"不会暂停以显示AlertDialog,因此在对话框关闭后不会调用onResume()。只需将onResume()中的代码移动到另一个方法中,并在对话框关闭时调用此方法。
考虑使用OnDismissListener