所以我在活动中有一个网页视图
我需要保持方向与设备所在的方向相同,当用户打开活动时(所以如果LANDSCAPE在活动开启时 - >保持那个!..如果PORTRAIT - &gt ;保持那个)
所以
这两个试探性无效:
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(null);
或
public void onConfigurationChanged(Configuration newConfig) {
newConfig.orientation = getResources().getConfiguration().orientation;
super.onConfigurationChanged(newConfig);
所以想法?
答案 0 :(得分:0)
对于修复活动方向
设置清单活动
android:screenOrientation="portrait"
或
android:screenOrientation="landscape"
答案 1 :(得分:0)
您应该阅读Androids活动生命周期。 当您重新打开一个活动时,会构建一个新实例。因此没有“先前”的定位。 如果您希望在暂停活动时使用相同的方向,则应将之前的方向存储在生命周期中持续存在的值中。
编辑:如果你想让你的例子工作,你应该在清单中声明它们。
答案 2 :(得分:0)
把android:configChanges =" orientation"在你的活动清单中告诉android,活动将自己处理屏幕方向的变化。
答案 3 :(得分:0)
我不确定你为什么要实现这个功能,但这应该有效:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null) // you only want to save orientation when you are loading the activity for the first time
{
((MyApp)getApplication()).orientation = getResources().getConfiguration().orientation; // I saved the orientation in the application class, but you can save it anywhere you like except in "this"
Log.d("test", "orientation in onCreate: "+((MyApp)getApplication()).orientation);
}
}
@Override
protected void onResume() {
super.onResume();
Log.d("test", "setContentview with orientation in onResume "+((MyApp)getApplication()).orientation);
if(((MyApp)getApplication()).orientation==Configuration.ORIENTATION_LANDSCAPE)
{
setContentView(R.layout.my_layout_portrait);
}
else if(((MyApp)getApplication()).orientation ==Configuration.ORIENTATION_PORTRAIT)
{
setContentView(R.layout.my_layout_landscape);
}
}
另一方面,强迫这样的方向对我来说是一个坏主意。