onConfigurationChanged - он по-прежнему показывает первый макет - PullRequest
4 голосов
/ 23 октября 2010

У меня есть действие, которое обрабатывает изменения конфигурации.Но теперь мне нужно изменить макет. Я попытался в обратном вызове onConfigurationChanged просто установить заново макет и надеясь получить правильный макет (участок), но он по-прежнему показывает первый макет для портретного вида (там два макета (одно имя) размещены вres / layout и res / layout-land:)

, если я удаляю android: configChanges = "direction", это должно работать, но мне нужно обрабатывать onConfigurationChanged.Что я должен делать??

Ответы [ 2 ]

16 голосов
/ 23 октября 2010

Если у вас есть ваш портретный макет main.xml в /res/layout и ваш альбомный макет main.xml в /res/layout-land, а ваш onConfigurationChanged() выглядит так:

    public void onConfigurationChanged(Configuration newConfig) {
            super.onConfigurationChanged(newConfig);                
            setContentView(R.layout.main);
    ...
    ...
    ...

    }

И в вашем Манифесте вы должны иметь android:configChanges="keyboardHidden|orientation"

Тогда все должно работать нормально, как в моем приложении. Это то, что вы делаете?

3 голосов
/ 23 марта 2015
// In your activity code.
int mCurrentOrientation;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mfo_offers);
    ........
    mCurrentOrientation = getCurrentOrientation();
}
@Override    
public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        // You may handle different configuration changes in your activity which configured in your mainfest.xml, you only need to recreate layout when orientation changes.
        if(mCurrentOrientation != newConfig.orientation) {          
            recreate(); // This recreate the activity if you can properly restore your activity state.  
        }
        ......
}

См. Activity.recreate () здесь: http://developer.android.com/reference/android/app/Activity.html#recreate()

...