是否可以将listView的setEmptyView(来自ListFragment)作为imageView和textView?

时间:2014-05-08 15:33:31

标签: java xml listview

我知道可以将textView设置为emptyView,但是可以使用imageView和textView。

我在linearLayout中添加了imageView和TextView,并为布局提供了ID =空。

在列表片段中注入View并获得下面的代码

Java

@InjectView(R.id.empty)     查看空;

 View empty = getActivity().getLayoutInflater().inflate(R.id.empty, null);
    ListView list = getListView();
    list.setEmptyView(empty);

和XML

    <LinearLayout
                    android:id="@+id/empty"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_vertical"
                    android:orientation="vertical">

                <ImageView
                        android:layout_width="150dp"
                        android:layout_height="wrap_content"
                        android:layout_gravity="center_horizontal"
                        android:src="@drawable/message_blank"/>

                <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="@dimen/gap_huge"
                        android:layout_marginRight="@dimen/gap_huge"
                        android:layout_marginTop="@dimen/gap_large"
                        android:gravity="center"
                        android:tag="akkurat"
                        android:text="text"
                        android:textColor="#A0A0A0"
                        android:textSize="@dimen/textsize_small"/>
        </LinearLayout>

运行此代码我收到此错误

enter code here05-08 16:26:21.673: E/AndroidRuntime(2327): FATAL EXCEPTION: main

05-08 16:26:21.673:E / AndroidRuntime(2327):java.lang.RuntimeException:无法启动活动ComponentInfo {uk.co.xxxx.xx / uk.co.xxxx.messaging.MessagingActivity}: java.lang.IllegalStateException:尚未创建的内容视图 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread.access $ 700(ActivityThread.java:159) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1316) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.os.Handler.dispatchMessage(Handler.java:99) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.os.Looper.loop(Looper.java:137) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread.main(ActivityThread.java:5419) 05-08 16:26:21.673:E / AndroidRuntime(2327):at java.lang.reflect.Method.invokeNative(Native Method) 05-08 16:26:21.673:E / AndroidRuntime(2327):at java.lang.reflect.Method.invoke(Method.java:525) 05-08 16:26:21.673:E / AndroidRuntime(2327):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1187) 05-08 16:26:21.673:E / AndroidRuntime(2327):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003) 05-08 16:26:21.673:E / AndroidRuntime(2327):at dalvik.system.NativeStart.main(Native Method) 05-08 16:26:21.673:E / AndroidRuntime(2327):引起:java.lang.IllegalStateException:尚未创建内容视图 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.ListFragment.ensureList(ListFragment.java:328) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.ListFragment.getListView(ListFragment.java:222) 05-08 16:26:21.673:E / AndroidRuntime(2327):at uk.co.x.messaging.MessagingPortraitFragment.onCreateView(MessagingPortraitFragment.java:99) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.Fragment.performCreateView(Fragment.java:1460) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1188) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.Activity.performStart(Activity.java:5382) 05-08 16:26:21.673:E / AndroidRuntime(2327):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2266) 05-08 16:26:21.673:E / AndroidRuntime(2327):... 11 more

提前谢谢。

1 个答案:

答案 0 :(得分:1)

在我将代码移到Fragment的onStart()方法之前,我遇到了同样的错误:

View empty = getActivity().getLayoutInflater().inflate(R.id.empty, null);
getActivity().addContentView(empty, getListView().getLayoutParams());
getListView().setEmptyView(empty);