我遇到了这样的问题:我希望将一些片段作为public static
课程的Activity
成员。
但是当我将这样的Fragment放到布局文件中时,我收到了这样的异常:
Caused by: android.support.v4.app.Fragment$InstantiationException:
Unable to instantiate fragment com.tst.MainActivity.InnerFragment:
make sure class name exists, is public,
and has an empty constructor that is public
...
我的代码如下所示:
package com.tst;
public final class MainActivity extends SherlockFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public static class InnerFragment extends SherlockFragment {
public InnerFragment() {
super();
}
...
}
}
布局文件如下所示:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<fragment
android:id="@+id/inner_fragment"
android:name="com.tst.MainActivity.InnerFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
现在我的问题是为什么这样的代码抛出此异常?因为Android应该能够InnerFragment
public static
,因为它是public static
。我还习惯使用{{1}}片段而且它们有效,但在那段时间我以编程方式在不在xml定义中的代码中添加它们。
此致 米甲
答案 0 :(得分:4)
更改
android:name="com.tst.MainActivity.InnerFragment"
到
android:class="com.tst.MainActivity$InnerFragment"