【问题标题】:Set Actionbar overlay from SherlockFragment从 SherlockFragment 设置操作栏覆盖
【发布时间】:2014-04-17 06:52:49
【问题描述】:

我想在我的 SherlockFragment 类中设置 ActionbarOverlay 功能。 谁能告诉我,我该怎么做?

我尝试在 OnCreateView 方法中添加行 getSherlockActivity().requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);

但它给了我错误:

04-17 12:19:35.789: E/AndroidRuntime(844): FATAL EXCEPTION: main
04-17 12:19:35.789: E/AndroidRuntime(844): android.util.AndroidRuntimeException: requestFeature() must be called before adding content
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:210)
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.oceans.sherelock.internal.ActionBarSherlockNative.requestFeature(ActionBarSherlockNative.java:97)
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.oceans.sherelock.app.SherlockFragmentActivity.requestWindowFeature(SherlockFragmentActivity.java:276)
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.wallpapermaker.keepcalm.UserProfile_NoBoringFragment.onCreateView(UserProfile_NoBoringFragment.java:92)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.Fragment.performCreateView(Fragment.java:1500)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:938)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1115)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1478)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:446)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.os.Handler.handleCallback(Handler.java:605)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.os.Handler.dispatchMessage(Handler.java:92)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.os.Looper.loop(Looper.java:137)
04-17 12:19:35.789: E/AndroidRuntime(844):  at android.app.ActivityThread.main(ActivityThread.java:4424)
04-17 12:19:35.789: E/AndroidRuntime(844):  at java.lang.reflect.Method.invokeNative(Native Method)
04-17 12:19:35.789: E/AndroidRuntime(844):  at java.lang.reflect.Method.invoke(Method.java:511)
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-17 12:19:35.789: E/AndroidRuntime(844):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-17 12:19:35.789: E/AndroidRuntime(844):  at dalvik.system.NativeStart.main(Native Method)

P.S.我无法在 Activity 中设置它,因为我不想为我的 Activity 中的其他 Fragment 启用叠加功能。

【问题讨论】:

    标签: android actionbarsherlock fragment overlay


    【解决方案1】:

    您必须在活动中调用 setContent 之前调用

    getSherlockActivity().requestWindowFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
    

    在您的活动中添加内容视图之前放置它。

    希望对你有帮助。

    更新

    然后在你的 Fragment 中扩展第一个 SherlockFragment 然后在调用 setContentView 方法之前将代码放入 Activity 的 OnCreate 方法中。

    getSherlock().requestFeature(Window.FEATURE_ACTION_MODE_OVERLAY);
    

    对不起我的错 再次检查更新。

    【讨论】:

    • 我知道我必须把它放在 setContent 之前 Activity 但我问的是Fragment
    • 我尝试使用您更新的解决方案,但这也给了我同样的错误。
    • 我无法在 Activity 中设置它,因为我不想为我的 Activity 中的其他 Fragment 启用覆盖功能。
    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多