Android - 如何在运行时锁定片段中的屏幕

时间:2015-01-03 23:15:24

标签: android android-fragments

我正在尝试在片段中加载webview时锁定屏幕方向。 我在一项活动中做了类似的事情并且运作良好。然而,当我在一个片段中使用相同的代码时,我在eclipse IDE中得到了一个警告说方法setRequestedOrientation未定义类型MyWebViewFragment

这是代码的一部分

public class MyWebViewFragment extends Fragment {

..............

       ...............

        // lock screen before proceeding
        int currentOrientation = getResources().getConfiguration().orientation; 
        if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
        }
        else {
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
        }

        ............
        @Override
        public void onPageFinished(WebView view, String url) {
             // unlock screen
             setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
        }

eclipse建议的一个修复是创建一个setRequestedOrientation方法,但我相信应该有更好的方法。

提前致谢

1 个答案:

答案 0 :(得分:0)

我在这里找到了解决方案的相关问题:Check network connection in fragment

我的解决方案是使用getActivity()

来获取活动

现在更新的代码可以使用:

public class MyWebViewFragment extends Fragment {

..............

   ...............

    // lock screen before proceeding
    int currentOrientation = getResources().getConfiguration().orientation; 
    if (currentOrientation == Configuration.ORIENTATION_LANDSCAPE) {
         getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
    }
    else {
         getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
    }

    ............
    @Override
    public void onPageFinished(WebView view, String url) {
         // unlock screen
         getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    }