3

我得到一个错误

07-04 01:49:56.325: E/AndroidRuntime(9693): java.lang.NullPointerException

在事务完成后尝试在 Fragment 中膨胀 ViewStub

sendMessageView = ((ViewStub) rootView
            .findViewById(R.id.send_message_viewstub)).inflate();

这里是 XML

<ViewStub
        android:id="@+id/send_message_viewstub"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:inflatedId="@+id/panel_import"
        android:layout="@layout/fragment_send_message" />
4

2 回答 2

-1

同意 Shawnic,您向我们展示的那条错误线并不能说明什么。我可以告诉你,使用片段比活动要复杂一些。

但是话虽如此,我认为您不能使用片段作为包含的布局吗?在您的问题的上下文中,片段到底是什么或在哪里?

Fragment 有自己的类文件,负责扩充布局以用作 Fragment。

我也担心你发布的这部分:

sendMessageView = ((ViewStub) rootView
        .findViewById(R.id.send_message_viewstub)).inflate();

现在我有这方面的经验,但已经有一段时间了,我不确定你的这部分代码是否正确?

这是 Android 建议您编写它的方式:

 ViewStub stub = (ViewStub) findViewById(R.id.stub);
 View inflated = stub.inflate();

在您的代码中,什么样的对象是

sendMessageView 

您可能希望首先将您的代码更改为此,以确保我们不确切知道为什么 Android 建议我们这样做,但我们可能应该这样做。

于 2016-05-04T04:51:34.590 回答
-2

如果您总是要在 this 中膨胀相同的布局,那么使用标签ViewStub会更好。include

<include layout="@layout/fragment_send_message />

include在运行时用指定的布局替换自己,并允许您的布局是模块化和可读的。

于 2015-05-29T15:12:46.117 回答