2013-06-19 5 views
0

Я хочу, чтобы загрузить новую активность, когда ориентация изменяется от Портретного на альбомный, для которого я использую:Начать новую деятельность по изменению ориентации

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     startActivity(new Intent(this, ABCDActivity.class)); 
    } 

    if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     super.onConfigurationChanged(newConfig); 
     finish(); 
    } 
} 

Но это не меняет свою деятельность с изменением ориентации , Я что-то пропустил?

+0

Ссылка: http://stackoverflow.com/questions/12983792/how-to-switch-to-other-activity-at-orientation-change-and-then-back-again – NarendraJi

ответ

1

onConfigurationChanged() метод не будет вызываться, если не объявлены соответствующие атрибуты в соответствии с лицензией в AndroidManifest.xml:

android:configChanges="orientation" 
0

Почему вы хотите начать новую работу, когда изменилась ориентация? Лучше просто предоставить различные ресурсы для разных конфигураций! Или используйте Фрагменты внутри 1 Действия.

Более подробную информацию можно найти здесь:

EDIT: Вы можете просто создать одну активность, которая воссоздает себя по изменению ориентации. Поэтому удалите все configChanges="screenSize...", которые у вас есть в вашем AndroidManifest.xml. В xml-файлах для деятельности вы можете просто ссылаться на другой фрагмент. И снова, больше информации об этом можно найти в приведенных выше ссылках.

MyActivity.java

public class MyActivity extends Activity 
{ 
@Override 
public void onCreate(Bundle cycle) 
{ 
    super.onCreate(cycle); 
    this.setContentView(R.layout.myactivity); 
} 
} 

Рез/макет/myactivity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     class="com.example.myapp.fragments.TimeFrameGraphFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</FrameLayout> 

И Рез/макета земли/myactivity.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <fragment 
     class="com.example.myapp.fragments.AllDataGraphFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 

</FrameLayout> 
+0

Я показываю данные (на графике) для определенного временного интервала в портретном режиме, но я хочу отобразить все данные, когда пользователь переключится на Пейзаж. –

+0

Звучит как идеальная работа для встроенной системы ресурсов с использованием макета/макета-земли/папок. Я обновил свой ответ с помощью некоторого примера кода. Пожалуйста, примите это, если это поможет вам. – Jelle

1

В вашем ManifestActivity теге для каждого действия, которое вы хотите изменить для конфигурации, вы должны поместить эту строку:

андроида: configChanges = "ориентация | Размер экрана"

В качестве приложения дизайн записки ... Запуск новой деятельности по изменению ориентации не рекомендуется ...

2

Попробуйте это,

@Override 
    public void onConfigurationChanged(Configuration newConfig) 
    { 
    super.onConfigurationChanged(newConfig); 
    if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
     { 
     startActivity(new Intent(this, ABCDActivity.class)); 
     } 
    }