【发布时间】:2017-01-12 12:16:57
【问题描述】:
在我的应用程序主页中,google place 自动完成 fragment 在对话框栏中按下按钮时打开,该位置用于搜索查询。问题是当我尝试通过再次按下按钮来更改位置时,应用程序崩溃并出现以下错误。
*android.view.InflateException: Binary XML file line #24: Binary XML file line #24: Error inflating class fragment
Duplicate id 0x7f0e00db, tag null, or parent id 0xffffffff with another fragment for com.google.android.gms.location.places.ui.PlaceAutocompleteFragment*
这是按钮按下活动及其调用的方法。
case R.id.text_area:
EditLocation();
break;
private void EditLocation() {
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.area);
dialog.setTitle("Please enter the location");
PlaceAutocompleteFragment autocompleteFragment = (PlaceAutocompleteFragment)
getFragmentManager().findFragmentById(R.id.autocomplete_fragment);
((EditText)autocompleteFragment.getView().findViewById(R.id.place_autocomplete_search_input)).setHint("Search Location");
//((EditText)autocompleteFragment.getView().findViewById(R.id.place_autocomplete_search_input)).setTextSize(10.0f);
//txtlocation=(TextView) findViewById(R.id.dialogLocationText);
autocompleteFragment.setOnPlaceSelectedListener(this);
Button dialogButtonSave = (Button) dialog.findViewById(R.id.btnOK);
// if button is clicked, close the custom dialog
dialogButtonSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//area=dialogLocation.getText().toString();
location.setText(area);
dialog.dismiss();
//autocompleteFragment.setText("");
}
});
dialog.show();
}
下面是xml代码
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<android.support.v7.widget.CardView
android:layout_width="fill_parent"
android:layout_marginTop="10dp"
android:layout_height="35dp"
android:layout_gravity="center_vertical"
android:layout_marginBottom="10dp"
android:layout_weight=".335"
android:gravity="center"
android:textSize="13sp"
android:background="@android:color/white"
>
<fragment
android:id="@+id/autocomplete_fragment"
android:name="com.google.android.gms.location.places.ui.PlaceAutocompleteFragment"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.v7.widget.CardView>
<Button
android:id="@+id/btnOK"
android:layout_width="350dp"
android:layout_margin="10dp"
android:layout_height="35dp"
android:text="OK"
android:background="@drawable/custom_btn_orange"/>
</LinearLayout>
以下是按钮和片段如何操作的屏幕截图。
下面是logcat
E/AndroidRuntime: 致命异常: main 进程:com.itcastle.kleanify,PID:3659 android.view.InflateException: Binary XML file line #24: Binary XML file line #24: Error inflating class fragment 在 android.view.LayoutInflater.inflate(LayoutInflater.java:539) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 在 android.app.Dialog.setContentView(Dialog.java:512) 在 com.itcastle.kleanify.WelcomeHomeTemp.EditLocation(WelcomeHomeTemp.java:533) 在 com.itcastle.kleanify.WelcomeHomeTemp.onClick(WelcomeHomeTemp.java:453) 在 android.view.View.performClick(View.java:5198) 在 android.view.View$PerformClick.run(View.java:21147) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:android.view.InflateException: Binary XML file line #24: Error inflating class fragment 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:782) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 在 android.app.Dialog.setContentView(Dialog.java:512) 在 com.itcastle.kleanify.WelcomeHomeTemp.EditLocation(WelcomeHomeTemp.java:533) 在 com.itcastle.kleanify.WelcomeHomeTemp.onClick(WelcomeHomeTemp.java:453) 在 android.view.View.performClick(View.java:5198) 在 android.view.View$PerformClick.run(View.java:21147) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.IllegalArgumentException:二进制 XML 文件第 24 行:重复 id 0x7f0e00db、标签 null 或父 id 0xffffffff 与 com.google.android.gms.location.places.ui.PlaceAutocompleteFragment 的另一个片段 在 android.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2205) 在 android.app.FragmentController.onCreateView(FragmentController.java:98) 在 android.app.Activity.onCreateView(Activity.java:5546) 在 android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:36) 在 android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:75) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:754) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:835) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:838) 在 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:515) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:423) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:374) 在 com.android.internal.policy.PhoneWindow.setContentView(PhoneWindow.java:393) 在 android.app.Dialog.setContentView(Dialog.java:512) 在 com.itcastle.kleanify.WelcomeHomeTemp.EditLocation(WelcomeHomeTemp.java:533) 在 com.itcastle.kleanify.WelcomeHomeTemp.onClick(WelcomeHomeTemp.java:453) 在 android.view.View.performClick(View.java:5198) 在 android.view.View$PerformClick.run(View.java:21147) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:148) 在 android.app.ActivityThread.main(ActivityThread.java:5417) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) I/Process:发送信号。 PID:3659 SIG:9 应用程序终止。
我经历了很多问题,几乎所有的答案都是在onDestroyView() 中添加一些我没有的代码行。在第一次单击片段时完美运行,问题是当我再次按下按钮以更改应用程序完全粉碎的位置时。任何建议表示赞赏。谢谢。
【问题讨论】:
-
编辑了问题。添加了日志猫。谢谢。
-
找到任何解决方案了吗? @HasanSawan
-
还没有。 @MayankBhatnagar
-
如果您仍在搜索它,我现在可以使用它,我可以将我的调用对话框方法与 xml 一起发布
-
请问。谢谢。 @MayankBhatnagar
标签: android android-fragments google-places-api