Tôi đang gặp một vấn đề thực sự kỳ lạ. Tôi có một đoạn chung được thêm vào trong hầu hết mọi hoạt động của ứng dụng của tôi. Đoạn này cho thấy một phiên bản nhỏ của thanh trình phát. Vì vậy, nó nghe một số chương trình phát sóng để cập nhật tên nhạc hiện tại và có một số điều khiển, như phát/tạm dừng.Nhận được "Fragment không tạo ra một cái nhìn" sau khi adition của Fragment khác mà không cần UI
Như tôi đã nói, tôi thêm đoạn này vào hầu hết mọi hoạt động trong ứng dụng của mình và tôi chưa bao giờ gặp bất kỳ vấn đề nào với nó. Nhưng bây giờ, tôi cần tạo một Fragment mới không có UI và được giữ lại (setRetainInstance (true)). Sau khi yêu cầu mảnh vỡ mới này, mọi thứ dường như ổn. Cho đến khi tôi xoay thiết bị và hoạt động bị hỏng.
Vì vậy, tìm trong nhật ký, tôi thấy các ngoại lệ sau đây:
07-05 14:10:23.818: ERROR/AndroidRuntime(25922): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.soongz/com.soongz.ui.PlaylistActivity}: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3576)
at android.app.ActivityThread.access$800(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #13: Error inflating class fragment
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:313)
at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:119)
at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262)
at net.simonvt.menudrawer.MenuDrawer.setContentView(MenuDrawer.java:964)
at com.soongz.ui.BaseComMenuActivity.setContentViewComMenu(BaseComMenuActivity.java:31)
at com.soongz.ui.PlaylistActivity.createView(PlaylistActivity.java:111)
at br.com.cybereagle.androidlibrary.ui.EagleActivity.onCreate(EagleActivity.java:57)
at android.app.Activity.performCreate(Activity.java:5206)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
... 12 more
Caused by: java.lang.IllegalStateException: Fragment com.soongz.ui.fragment.PlayerReduzidoFragment did not create a view.
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:303)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
... 26 more
ngoại lệ này đang xảy ra trong Fragment đó là đã có trong hoạt động, thay vì xảy ra trong Fragment mới. Nếu tôi loại bỏ đoạn với phiên bản nhỏ của thanh trình phát và giữ Mảnh mới không có Giao diện người dùng, mọi thứ sẽ hoạt động bình thường. Nó cũng hoạt động nếu tôi chỉ giữ mảnh cũ và loại bỏ mảnh mới.
Thêm chi tiết: Đoạn cũ được thêm vào thông qua XML bố cục. Đây là XML của Hoạt động:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<fragment
android:name="com.soongz.ui.fragment.ListaDeMusicasFragment"
android:id="@+id/lista_de_musicas_fragment"
style="?layoutListViewMusicas" />
<fragment
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:name="com.soongz.ui.fragment.PlayerReduzidoFragment"/>
</LinearLayout>
Đoạn mới (wih không UI) được thêm vào trong các cách sau:
FragmentManager fragmentManager = getSupportFragmentManager();
operacoesEmBackgroundFragment = (OperacoesEmBackgroundFragment) fragmentManager.findFragmentByTag(TAG_OPERACOES_EM_BACKGROUND_FRAGMENT);
if(operacoesEmBackgroundFragment == null){
operacoesEmBackgroundFragment = new OperacoesEmBackgroundFragment();
fragmentManager.beginTransaction()
.add(operacoesEmBackgroundFragment, TAG_OPERACOES_EM_BACKGROUND_FRAGMENT)
.commit();
}
Cảm ơn trước cho bất cứ ai có thể giúp tôi.
UPDATE:
tôi loại bỏ các setRetainInstance (true) từ đoạn không có giao diện người dùng để xem nếu vấn đề có liên quan đến này. Nhưng vấn đề vẫn đang xảy ra.
Nếu bạn đang thêm phân đoạn theo chương trình thông qua FragmentTransaction, hãy đảm bảo cung cấp vùng chứa phân đoạn của bạn Xem id. Ngoài ra @ FernandoCamargo tôi không thể mô tả tôi cảm ơn vì sự cố này nhanh chóng như thế nào, cảm ơn bạn. –