对话框中的AutocompleteSearchFragment提供了InflateException

时间:2019-07-13 03:11:22

标签: android android-fragments autocomplete dialog google-places-api

我正在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.onCreateViewandroid.view.LayoutInflater.createViewFromTag

是否由于Activity认为存在多个AutocompleteSearchFragments而导致重复ID 错误?

如果是的话,AutocompleteSearchFragment关闭后如何删除或删除Dialog

1 个答案:

答案 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