私はそのような問題に遭遇しました:クラスpublic static
のメンバーとしていくつかのフラグメントを持ちたかったのです。Activity
しかし、そのようなフラグメントをレイアウト ファイルに配置すると、次のような例外が発生します。
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
。さらに、以前は Fragments を使用しpublic static
ていましたが、それらは機能していましたが、当時は xml 定義ではなくコードでプログラムで追加していました。
よろしく、ミハル