我正在AutoCompleteSearchFragment
中使用Google Map's Places API的Dialog
。启动对话框,将其关闭,然后重新启动时,会出现我遇到的错误。
错误消息:
错误放大类片段。造成原因:java.lang.IllegalArgumentException:二进制XML文件第69行:重复的ID 0x7f0a0027,标记为null或父ID 0x7f0a00c7,以及com.google.android.libraries.places.widget.AutocompleteSearchFragmet
的另一个片段
我的代码:
Dialog alert = new Dialog(MainActivity.this);
alert.requestWindowFeature(Window.FEATURE_NO_TITLE);
alert.setContentView(R.layout.forgot_info);
alert.setCancelable(true);
alert.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
AutocompleteSupportFragment autocompleteSupportFragment =
(AutocompleteSupportFragment) getSupportFragmentManager().findFragmentById(R.id.auto2);
该错误还会继续提及android.support.v4.app.FragmentActivity.onCreateView
和android.view.LayoutInflater.createViewFromTag
。
是否由于Activity
认为存在多个AutocompleteSearchFragments
而导致重复ID 错误?
如果是的话,AutocompleteSearchFragment
关闭后如何删除或删除Dialog
?
答案 0 :(得分:0)
我找到了解决问题的方法,针对以后可能会帮助的人。
为了防止Activity
每次打开AutocompleteSearchFragment
时都有多个具有相同ID的Dialog
,我将onDismissListener
设置为Dialog
以删除AutocompleteSearchFragment
:
代码:
alert.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
getSupportFragmentManager().beginTransaction().
remove((Fragment) autocompleteSupportFragment).commit();
}
});
上面的代码所做的是,当称为Dialog
的{{1}}被解除时,它使用alert
来删除该SupportFragmentManager
。