繁体   English   中英

当对话框被解除时如何处理片段状态

[英]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();
    }
});

FragmentActivity或者在您创建和显示Dialog您必须像这样设置AddressListener

ExampleDialog dialog = new ExampleDialog();
dialog.setAddressListener(this);
dialog.show();

当然,您必须在FragmentActivity实现onSelected()方法,并且只要用户选择Dialog onSelected()就会被调用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM