我正在开发一个Android项目,我正在创建自定义列表视图。该列表视图包含多个文本视图,我正在为我的文本视图创建样式,以便不必一遍又一遍地重复相同的样式。
以下是我的布局:
以下是我的TextView样式:
以下是我的XML填充代码,用于显示在列表视图上:
我收到的错误信息是:
进程:com.BoardiesITSolutions.CritiMonApp,PID:1451 java.lang.NullPointerException: 尝试在空对象引用上调用'int android.view.View.getImportantForAccessibility()' 在android.widget.AbsListView.obtainView(AbsListView.java:2360)中 在android.widget.ListView.makeAndAddView(ListView.java:1864)中 在android.widget.ListView.fillDown(ListView.java:698)中 在android.widget.ListView.fillFromTop(ListView.java:759)中 在android.widget.ListView.layoutChildren(ListView.java:1673)中 在android.widget.AbsListView.onLayout(AbsListView.java:2148)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:890)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072)中 在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829)中 在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)中 在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5779)中 在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767)中 在android.view.Choreographer.doCallbacks(Choreographer.java:580)中 在android.view.Choreographer.doFrame(Choreographer.java:550)中 在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753)中
以下是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView android:id="@+id/txtFirstOccurred"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/CrashGroup"/>
<TextView android:id="@+id/txtLastOccurred"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
style="@style/CrashGroup"/>
</LinearLayout>
以下是我的TextView样式:
<style name="CrashGroup">
<item name="android:singleLine">false</item>
<item name="android:textSize">@android:style/TextAppearance.Small</item>
<item name="android:gravity">center_vertical</item>
</style>
以下是我的XML填充代码,用于显示在列表视图上:
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
try
{
convertView = LayoutInflater.from(getContext()).inflate(R.layout.android_crash_group_layout, null);
TextView txtFirstOccurred = (TextView)convertView.findViewById(R.id.txtFirstOccurred);
txtFirstOccurred.setText(getItem(position).getFirstOccurred());
TextView txtLastOccurred = (TextView)convertView.findViewById(R.id.txtLastOccurred);
txtLastOccurred.setText(getItem(position).getLastOccurred());
return convertView;
}
catch (Exception ex)
{
Log.e(TAG, ex.toString());
return null;
}
}
我收到的错误信息是:
进程:com.BoardiesITSolutions.CritiMonApp,PID:1451 java.lang.NullPointerException: 尝试在空对象引用上调用'int android.view.View.getImportantForAccessibility()' 在android.widget.AbsListView.obtainView(AbsListView.java:2360)中 在android.widget.ListView.makeAndAddView(ListView.java:1864)中 在android.widget.ListView.fillDown(ListView.java:698)中 在android.widget.ListView.fillFromTop(ListView.java:759)中 在android.widget.ListView.layoutChildren(ListView.java:1673)中 在android.widget.AbsListView.onLayout(AbsListView.java:2148)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:890)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)中 在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)中 在android.widget.LinearLayout.onLayout(LinearLayout.java:1466)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.widget.FrameLayout.layoutChildren(FrameLayout.java:573)中 在android.widget.FrameLayout.onLayout(FrameLayout.java:508)中 在android.view.View.layout(View.java:15596)中 在android.view.ViewGroup.layout(ViewGroup.java:4966)中 在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2072)中 在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1829)中 在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1054)中 在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5779)中 在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:767)中 在android.view.Choreographer.doCallbacks(Choreographer.java:580)中 在android.view.Choreographer.doFrame(Choreographer.java:550)中 在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:753)中
看起来似乎与样式有关,如果我从文本视图中移除这个样式属性,它似乎可以正常工作。
android.view.InflateException: Binary XML file line #6: Error inflating class <unknown>
错误。 - Boardyparent
而不是null
,并将第三个参数设置为false
。 - A.S.