Android:不要旋转 activity 的屏幕(无清单)
Android: Don't rotate the screen of the activity (No Manifest)
我知道我必须使用 android:screenOrientation="portrait/landscape" 如果我不想改变屏幕的旋转,但我在清单中这样做了。我想在 java class 中做同样的事情。我该怎么做?
这是我的代码
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
switch (getArguments().getInt(ARG_SECTION_NUMBER))
{
case 1:
View rootView = inflater.inflate(R.layout.fragment_cubo, container, false);
return rootView;
case 2:
View rootView2 = inflater.inflate(R.layout.fragment_cubo2, container, false);
return rootView2;
case 3:
View rootView3 = inflater.inflate(R.layout.fragment_cubo3, container, false);
return rootView3;
case 4:
View rootView4 = inflater.inflate(R.layout.fragment_cubo4, container, false);
return rootView4;
default:
View rootView0 = inflater.inflate(R.layout.fragment_cubo, container, false);
return rootView0;
}
}
而且我只想在情况2和情况3中更改屏幕的位置,但我想不起方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
因为无法从静态上下文中引用它(方法 onCreateView 在 class 静态中)
我该怎么做?
像这样:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
很棒的博客 post 这里的主题:https://www.novoda.com/blog/portrait-only-apps/ :-)
你不应该真的更新问题,而是提出新问题。
您需要覆盖具有 activity 参数的回调方法,或将参数保存为字段。因此,您可能需要 运行 switch 语句两次。
@Override
public void onAttach(Activity activity) {
// your switch statement
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
您可以在此处阅读更多内容:https://developer.android.com/reference/android/app/Fragment.html#Lifecycle
您可以通过以下功能完成此操作
public void changeOrientation() {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}
我知道我必须使用 android:screenOrientation="portrait/landscape" 如果我不想改变屏幕的旋转,但我在清单中这样做了。我想在 java class 中做同样的事情。我该怎么做?
这是我的代码
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
switch (getArguments().getInt(ARG_SECTION_NUMBER))
{
case 1:
View rootView = inflater.inflate(R.layout.fragment_cubo, container, false);
return rootView;
case 2:
View rootView2 = inflater.inflate(R.layout.fragment_cubo2, container, false);
return rootView2;
case 3:
View rootView3 = inflater.inflate(R.layout.fragment_cubo3, container, false);
return rootView3;
case 4:
View rootView4 = inflater.inflate(R.layout.fragment_cubo4, container, false);
return rootView4;
default:
View rootView0 = inflater.inflate(R.layout.fragment_cubo, container, false);
return rootView0;
}
}
而且我只想在情况2和情况3中更改屏幕的位置,但我想不起方法setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
因为无法从静态上下文中引用它(方法 onCreateView 在 class 静态中)
我该怎么做?
像这样:
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
很棒的博客 post 这里的主题:https://www.novoda.com/blog/portrait-only-apps/ :-)
你不应该真的更新问题,而是提出新问题。
您需要覆盖具有 activity 参数的回调方法,或将参数保存为字段。因此,您可能需要 运行 switch 语句两次。
@Override
public void onAttach(Activity activity) {
// your switch statement
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
您可以在此处阅读更多内容:https://developer.android.com/reference/android/app/Fragment.html#Lifecycle
您可以通过以下功能完成此操作
public void changeOrientation() {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else {
getActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
}
}