[英]how to handle the fragment state when dialog dismissed
我在Dialog
有一个ListView
。 当我从列表中选择一个项目时,我忽略了Dialog
。 现在出现了前一个Fragment
。 我需要从Dialog
获取所选值。
addressListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
addr = (Address) addressListView.getItemAtPosition(position);
AppUtils.printLog("selected",addr.getLatitude()+","+addr.getLongitude());
dismiss();
}
});
您需要在Dialog
添加一个监听器。 例如,在您的Dialog
类中添加以下内容:
private AddressListener addressListener;
public interface AddressListener {
public void onSelected(Address address);
}
public AddressListener getAddressListener() {
return addressListener;
}
public void setAddressListener(AddressListener addressListener) {
this.addressListener = addressListener;
}
我建议你也写一个帮助方法来通知监听器:
protected void notifyAddressListener(Address address) {
if(this.addressListener != null) {
this.addressListener.onSelected(address);
}
}
然后,您只需要调用notifyAddressListener(...)
在OnItemClickListener
传递一个值回监听器:
addressListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View v, int position, long id) {
addr = (Address) addressListView.getItemAtPosition(position);
AppUtils.printLog("selected",addr.getLatitude()+","+addr.getLongitude());
// Notify listener
notifyAddressListener(addr);
dismiss();
}
});
在Fragment
或Activity
或者在您创建和显示Dialog
您必须像这样设置AddressListener
:
ExampleDialog dialog = new ExampleDialog();
dialog.setAddressListener(this);
dialog.show();
当然,您必须在Fragment
或Activity
实现onSelected()
方法,并且只要用户选择Dialog
onSelected()
就会被调用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.