あなたのような内部クラスの断片がある場合:FragmentActivityはそれはそれはそれを処理する具体的なクラスからそれを呼び出すことはありませんフラグメントを再開しようとしたとき
public class SomethingFragment extends Fragment {
public static final class TypeFragment extends BaseFragment
{
public static Fragment newInstance()
{
return new TypeFragment();
}
private View mRootView;
private ListView mListView;
/**
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
* android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_category_list, container, false);
mListView = (ListView) mRootView.findViewById(R.id.fragment_listview);
return mRootView;
}
}
}
すると、あなたの修飾子は公共であることを確認してください抽象FragmentActivityから、そしてあなたの内部クラスの断片がプライベートであれば活動はonSaveState、onRestoreStateへの参照を持っていない、などの初期化... public
へ
private
は私のためにそれを修正!
更新:
がhttps://android.googlesource.com/platform/frameworks/support/+/refs/heads/master/v4/java/android/support/v4/app/Fragment.java
(フラグメントが完全に破壊された)保存された状態からFragment
を復元しようとしたときinstantiate
方法はnewInstance()
呼び出すを見てください。
メソッドは、クラスに一般にアクセス可能である必要があります。したがって、内部クラスとして定義する場合、適切な場合はpublic
とstatic
である必要があります。
今後の質問をクリアしたいと考えています。
フラグメントがコンテナにどのようにロードされていますか?レイアウトXMLやコードを介して?私は前者を試していませんが、後者では静的内部断片クラスに問題はありませんでした。私はcompat libのv1を使用しています。 – PJL
私は、内部クラスの名前と一緒にというタグが含まれているフラグメントを持つレイアウトを持っています。 –
Necronet
APIデモでFragmentLayoutSupportサンプルを見たことがありますか?これは静的内部フラグメントクラスを参照します:**
PJL