我如何在屏幕方向上停止重新启动或调用create(),我想停止在屏幕方向上重新创建活动。在此先感谢请告诉我任何更好的解决方案,它真正创造一个问题。就像在我的程序中我选择一些图片,但在屏幕方向上图像消失,这就是为什么我想停止在屏幕方向上重新开始活动。
enter code here
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.mainwindow);
Toast.makeText(getApplicationContext(),"a", 1).show();
bitmap = (Bitmap)getLastNonConfigurationInstance();
//Toast.makeText(getApplicationContext(),"a1", 1).show();
if (savedInstanceState != null)
{
bitmap=BitmapFactory.decodeFile(mImageCaptureUri.getPath());
Toast.makeText(getApplicationContext(),"preview have value", 1).show();
preview.setVisibility(View.VISIBLE);
From_Folder.setVisibility(View.GONE);
From_Camera.setVisibility(View.GONE);
preview.setImageBitmap(bitmap);
}
答案 0 :(得分:26)
最多API 13
configChanges
属性有一个新值, screenSize
因此,如果您使用的是大屏幕,请确保在configChanges属性中添加screenSize:
android:configChanges="orientation|keyboardHidden|screenSize"
答案 1 :(得分:8)
这种情况正在发生,因为当屏幕方向旋转时,Activity会重新启动。在这种情况下,您可以在AndroidManifest文件的标记中添加configChanges
属性,以停止重新创建活动。
<activity android:name=".Activity_name"
android:configChanges="orientation|keyboardHidden">
通过,这也不会因方向改变而停止。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
setContentView(R.layout.login_landscape);
}
else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
setContentView(R.layout.login);
}
}
答案 2 :(得分:4)
在AndroidManifest.xml文件中,在活动添加
中android:configChanges="keyboardHidden|orientation"
示例如下:
<activity android:name=".YourActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation">
答案 3 :(得分:2)
不是最好的,但也许最简单的解决方案是添加
android:configChanges="keyboardHidden|orientation"
你的清单中的youractivity所以它看起来像
<activity android:name="com.your.activity"
android:configChanges="keyboardHidden|orientation"/>
答案 4 :(得分:0)
有一个更完整的参数列表,用于阻止活动重新创建(在Manifest.xml中):
<activity
android:name = ".MyActivity"
android:configChanges = "orientation|keyboard|keyboardHidden|screenLayout|screenSize">
</activity>
答案 5 :(得分:-1)
两种方式:
你可以在清单文件中设置android:configChanges =“keyboardHidden | orientation”,以避免重新开始活动。
或者 在更改覆盖方法
内的方向上进行要应用的更改@覆盖
public void onConfigurationChanged(Configuration newConfig) {
// Perform the actions
super.onConfigurationChanged(newConfig);
}
答案 6 :(得分:-3)
添加
android:orientation="vertical"
或
android:orientation="horizontal"
到mainwindow.xml
中的布局。
实施例:::
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
无需在Activity类中添加任何内容。
希望这可以帮到你