Nec*_*net 5 android android-fragments
我一直在使用Android兼容包但我遇到了以下问题,似乎每当我在我的应用程序上创建一个Fragment作为内部静态类并尝试启动该活动时它会显示以下错误
android.support.v4.app.Fragment$InstantiationException: Unable to instantiate fragment org.wr.CreditCardHolderActivity.CreditCardHolderFragment: make sure class name exists, is public, and has an empty constructor that is public
Run Code Online (Sandbox Code Playgroud)
当我将片段和活动分开时,一切顺利进行,任何人都知道为什么?我该如何解决?
谢谢!
如果你有一个内部类Fragment如:
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当FragmentActivity尝试重新启动它不会从它将从抽象FragmentActivity处理它的具体类中调用它的片段时,确保你的限定符是公共的,如果你的内部类Fragment是私有的,那么Activity没有引用onSaveState,onRestoreState ,初始化等..
private以public固定它给我的!
更新:
尝试从保存状态(片段被完全销毁)恢复时,该instantiate方法调用.newInstance()Fragment
所述newInstance方法需要的类是可公开访问的,因此,当被定义为一个内部类,这意味着它必须是public和static在适当情况下.
希望这能解决一些未来的问题.
| 归档时间: |
|
| 查看次数: |
5531 次 |
| 最近记录: |