【发布时间】:2015-11-05 16:29:58
【问题描述】:
我正在开发一个 Android 应用程序,并在其中生成了一些 PDF 文件。生成它们后,我会向应用程序启动 Intent 以显示 PDF(如 Acrobat)。
一旦我按下返回键返回我的应用程序,它在Samsung Galaxy S5 上崩溃并出现以下错误,而三星修改了正常的Android 5:
11-05 17:04:29.876: E/AndroidRuntime(1515): FATAL EXCEPTION: main
11-05 17:04:29.876: E/AndroidRuntime(1515): Process: (my package), PID: 1515
11-05 17:04:29.876: E/AndroidRuntime(1515): android.content.res.Resources$NotFoundException: File res/layout-v21/adapter_historie.xml from xml type layout resource ID #0x7f04001e
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.content.res.Resources.loadXmlResourceParser(Resources.java:3953)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.content.res.Resources.loadXmlResourceParser(Resources.java:3900)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.content.res.Resources.getLayout(Resources.java:2149)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.LayoutInflater.inflate(LayoutInflater.java:413)
11-05 17:04:29.876: E/AndroidRuntime(1515): at (my package).adapter.HistorienAdapter.onCreateViewHolder(HistorienAdapter.java:52)
11-05 17:04:29.876: E/AndroidRuntime(1515): at (my package).adapter.HistorienAdapter.onCreateViewHolder(HistorienAdapter.java:1)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5223)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4449)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.onLayout(LinearLayout.java:1865)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.onLayout(LinearLayout.java:1865)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:2102)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1956)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.LinearLayout.onLayout(LinearLayout.java:1865)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.widget.FrameLayout.onLayout(FrameLayout.java:508)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.View.layout(View.java:16550)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewGroup.layout(ViewGroup.java:5303)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2312)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2025)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1180)
11-05 17:04:29.876: E/AndroidRuntime(1515): at android.view.ViewRo
或者在Google Nexus 5 和Cyanogenmod 12.1 上使用此堆栈跟踪:
11-06 19:47:45.871: E/AndroidRuntime(22636): FATAL EXCEPTION: main
11-06 19:47:45.871: E/AndroidRuntime(22636): Process: (my package).vaz, PID: 22636
11-06 19:47:45.871: E/AndroidRuntime(22636): android.content.res.Resources$NotFoundException: File res/layout-v21/adapter_historie.xml from xml type layout resource ID #0x7f04001e
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2843)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.content.res.Resources.loadXmlResourceParser(Resources.java:2798)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.content.res.Resources.getLayout(Resources.java:1143)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.LayoutInflater.inflate(LayoutInflater.java:412)
11-06 19:47:45.871: E/AndroidRuntime(22636): at (my package).vaz.adapter.HistorienAdapter.onCreateViewHolder(HistorienAdapter.java:51)
11-06 19:47:45.871: E/AndroidRuntime(22636): at (my package).vaz.adapter.HistorienAdapter.onCreateViewHolder(HistorienAdapter.java:1)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:5223)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4449)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:4359)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1961)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1370)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1333)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:562)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:2900)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:3071)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1043)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.View.layout(View.java:15686)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewGroup.layout(ViewGroup.java:5039)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2086)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1843)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
11-06 19:47:45.871: E/AndroidRuntime(22636): at android.view.ViewR
(完整的跟踪可以找到here)
在我的代码的这一部分
public HistorienAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View layout = LayoutInflater.from(parent.getContext())
.inflate(R.layout.adapter_historie, parent, false);
return new ViewHolder(layout);
}
我在android.app.Fragment 中启动Intent,如下所示:
Uri path = Uri.fromFile(file);
Intent viewintent = new Intent(Intent.ACTION_VIEW);
viewintent.setDataAndType(path, "application/pdf");
getActivity().startActivity(viewintent);
【问题讨论】:
-
您的 .APK 文件似乎缺少资源文件。它应该在
res/layout-v21/adapter_historie.xml。不过,不确定您是如何做到的。您是否有某种可能导致此问题的自定义构建系统? -
@SnildDolkow 那是不可能的。在启动 Intent 之前,布局会正确加载。一切正常。就在我从另一个应用程序返回时,它崩溃了,所以布局必须在 .apk
标签: java android pdf android-fragments android-intent