2015-02-02 2 views
1

Я создаю фрагмент из XML-файла и напрямую добавляю XML-файл в метод setcontentview в действии. Впервые он работал нормально, если я снова открою этот фрагмент, чтобы заставить силу закрыть.Приложение получает силу закрыть, когда фрагмент открыт второй раз

Вопросы в журнале ошибок является

02-02 18:09:22.323: E/AndroidRuntime(5591): FATAL EXCEPTION: main 
02-02 18:09:22.323: E/AndroidRuntime(5591): Process: com.pal.newloginscreenui, PID: 5591 
02-02 18:09:22.323: E/AndroidRuntime(5591): android.view.InflateException: Binary XML file line #7: Error inflating class fragment 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at com.pal.newloginscreenui.DashboardActivity.display_popopMenu(DashboardActivity.java:112) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at com.pal.newloginscreenui.DashboardActivity.onClick(DashboardActivity.java:80) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.View.performClick(View.java:4463) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.View$PerformClick.run(View.java:18770) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.os.Handler.handleCallback(Handler.java:808) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.os.Handler.dispatchMessage(Handler.java:103) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.os.Looper.loop(Looper.java:193) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.app.ActivityThread.main(ActivityThread.java:5292) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at dalvik.system.NativeStart.main(Native Method) 
02-02 18:09:22.323: E/AndroidRuntime(5591): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f06004b, tag null, or parent id 0xffffffff with another fragment for com.pal.newloginscreenui.NavigationMenuFragment 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.app.Activity.onCreateView(Activity.java:4824) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689) 
02-02 18:09:22.323: E/AndroidRuntime(5591):  ... 17 more 

XML-:

<FrameLayout android:id="@+id/containner" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 
<fragment android:id="@+id/frag" 
    android:name="com.pal.newloginscreenui.NavigationMenuFragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
</FrameLayout> 

Popupwindow который я звоню

DoctorGlobal.pw = new PopupWindow(DashboardActivity.this);// create a popup window 
    DoctorGlobal.pw.setTouchable(true); 
    DoctorGlobal.pw.setFocusable(true); 
    DoctorGlobal.pw.setOutsideTouchable(true); 
    DoctorGlobal.pw.setTouchInterceptor(new OnTouchListener() { 
     @Override 
     public boolean onTouch(View v, MotionEvent event) { 

      if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
       DoctorGlobal.pw.dismiss(); 
       return true; 
      } 
      return false; 
     } 
    }); 

    int popWndwidth = (int)(width/4)*3; 
    DoctorGlobal.pw 
      .setWidth(popWndwidth); 
    DoctorGlobal.pw 
      .setHeight(android.view.ViewGroup.LayoutParams.MATCH_PARENT); 
    View contentView = getLayoutInflater().inflate(R.layout.navg_menu, null); 
    DoctorGlobal.pw.setContentView(contentView); 
    container = (FrameLayout) contentView.findViewById(R.id.containner); 
    DoctorGlobal.pw.showAsDropDown(v, 0, 0); 

в navg_menu имея приведенный выше код XML

+1

где ваш код? –

+0

Просьба также поделиться макетом xml. вы используете дочерние фрагменты? (Например, фрагмент в пределах фрагмента) – Muzikant

+0

<фрагмент андроид: идентификатор =» @ + идентификатор/осколочной» андроид: имя = "com.pal.newloginscreenui.NavigationMenuFragment" андроид: layout_width = "match_parent" андроид: layout_height = "match_parent"/>

ответ

0

Ваша ошибка:

android.view.InflateException: Binary XML file line #7: Error inflating class fragment 

    .... 

Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: 
Duplicate id 0x7f06004b, tag null, or parent id 0xffffffff with another 
fragment for com.pal.newloginscreenui.NavigationMenuFragment 

Ваши XML-теги:

<FrameLayout android:id="@+id/containner" 
    ....          > 
<fragment android:id="@+id/frag" 
    android:name="com.pal.newloginscreenui.NavigationMenuFragment" 
    .... 

Ваш Java:

View contentView = getLayoutInflater().inflate(R.layout.navg_menu, null); 

Вы getLayoutInflater().inflate(R.layout.navg_menu, null);

Казалось бы, либо navg_menu идентификатор не существует или его это меню xml, которое вы пытаетесь раздуть, возможно, должно быть использовано для меню и убедитесь, что у вас есть правильный идентификатор для создания contentView .;

`MenuInflater inflater = getMenuInflater();` 

`getMenuInflater().inflate` 

Или имеется дубликат идентификатора, к которому вы обращаетесь. Надеюсь, это поможет вам отладить его.

Я думаю, что ответ здесь поможет:
https://stackoverflow.com/a/8513735/3956566

или отклоняя фрагмент, когда вы закончите с этим, как показано здесь:

https://stackoverflow.com/a/14966061/3956566

+0

нет дубликата идентификатора. Я думал, что проблема заключается в том, что im-вызов фрагмента два раза в первый раз, когда он не получал никаких проблем, потому что в фрагменте backstack нет фрагментов, и я открывал второй раз, когда это была проблема с броском, может быть, фрагмент был взад-вперед. –

+0

@SantoshThota где код, когда вы называете это в первый раз, а затем во второй раз? –

+0

Фактически это было объявлено в файле xml na. поэтому я ничего не обрабатываю в java-коде. –

Смежные вопросы