2012-01-11 2 views
7

Как я могу остановить перезапуск или вызов на 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); 


    } 

ответ

3

Не самый лучший, но, возможно, самым простым решением является добавление

android:configChanges="keyboardHidden|orientation" 

к youractivity в манифесте, так это выглядит, как

<activity android:name="com.your.activity" 
     android:configChanges="keyboardHidden|orientation"/> 
-2

Добавить

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.

Надеется, что это может помочь вам

7

Это происходит потому, что при ориентации экрана вращает активность получает возобновлена. В этом случае вы можете добавить атрибут configChanges в свой тег в файле AndroidManifest, чтобы остановить повторное создание Activity.

<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);   
     } 
    } 
+0

Спасибо, это помогло мне –

+0

Спасибо, это было отличное решение для поддержки диалогов по изменению ориентации. – rwarner

+1

в API 13 должно включать в себя также значение 'screenSize' http://stackoverflow.com/questions/11630530/how-to- handle-screen-orientation-changes-changes-when-there-a-asyntask-running-with – sabadow

-1

Два способа для этого:

Либо вы можете установить андроид: configChanges = «keyboardHidden | ориентации» в файле манифеста, чтобы избежать отдыха деятельности.

Или Внесите изменения, которые вы хотите применить на изменение ориентации внутри перекрытая метода

@Override

public void onConfigurationChanged(Configuration newConfig) { 

      // Perform the actions 

    super.onConfigurationChanged(newConfig); 

} 
3

В вашем AndroidManifest.XML-файл, в деятельности добавить

android:configChanges="keyboardHidden|orientation" 

Пример, как показано ниже:

<activity android:name=".YourActivity" android:label="@string/app_name" android:configChanges="keyboardHidden|orientation"> 
+1

да, он работает после добавления этих строк в мой манифестроид: configChanges = "keyboardHidden | orientation" работает 100% – ravi

22

До API 13 было новое значение атрибута configChanges, screenSize

Так что если вы используя большие экраны, обязательно добавьте screenSize в свой атрибут configChanges:

android:configChanges="orientation|keyboardHidden|screenSize" 
+2

Критическая информация Вот. –

+2

+1 Хороший ответ, он должен принять ответ. –

+1

достаточно всего два параметра android: configChanges = "orientation | screenSize" –

-1

Есть более полный список параметров для рекреаций активности Предотвратить (в Manifest.xml):

<activity 
    android:name = ".MyActivity" 
    android:configChanges = "orientation|keyboard|keyboardHidden|screenLayout|screenSize"> 
</activity> 
Смежные вопросы