如何在屏幕方向上停止活动娱乐?

时间:2012-01-11 05:21:54

标签: android

我如何在屏幕方向上停止重新启动或调用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);


    }

7 个答案:

答案 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类中添加任何内容。

希望这可以帮到你