Почему мое изменение ориентации остается незамеченным?

Основываясь на принятом здесь ответе, я добавил этот код в Activity как первый шаг в изменении назначенного макета для Activity:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
        setContentView(R.layout.activity_settings_landscape);
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
        setContentView(R.layout.activity_settings);
    }
}

... и изменил элемент Activity в AndroidManifest.xml. например, изменив это из этого:

<activity
    android:name="hhs.app.SettingsActivity"
    android:label="@string/title_activity_settings" >
</activity>

... становится так:

<activity
    android:name="hhs.app.SettingsActivity"
    android:configChanges="orientation|keyboardHidden"
    android:label="@string/title_activity_settings" >
</activity>

(Я добавил джаз "configChanges").

Но, хотя mashing keypad.9 действительно меняет ориентацию в эмуляторе, тост не поднимается (точка останова в строке if если onConfigurationChanged() не достигнута). Что я делаю неправильно или опускаю?

Примечание: это не имело никакого значения, когда я удалил "|keyboardHidden" из строки "configChanges" в AndroidManifest (это было просто догадка - я подумал, не означает ли это "не обращать внимания на изменение ориентации, сделанное с помощью клавиатуры").

ОБНОВИТЬ

Я попробовал предложение Араута, а также предложение Джареда Берроуза, но ни один из них не работает для меня.

Холод это проблема эмулятора? У меня пока нет устройства для его тестирования, поэтому я не могу эмпирически ответить на этот вопрос сам.

ОБНОВЛЕНИЕ 2

Исходя из того, что я здесь прочитал, я подумал, что, возможно, добавление некоторого джаза OrientationEventListener решит эту дилемму, но нет!

Это код, который я добавил (показан в контексте; новшество - материал OrientationEventListener):

public class SettingsActivity extends ActionBarActivity {

    private OrientationEventListener mOrientationListener;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_settings);

        . . .

        mOrientationListener = new OrientationEventListener(getApplicationContext()) {
            @Override
            public void onOrientationChanged(int orientation) {
                Toast tostadaOrient = Toast.makeText(SettingsActivity.this, 
orientation, Toast.LENGTH_SHORT);
                tostadaOrient.setGravity(Gravity.CENTER, 0, 0);
                tostadaOrient.show();
            }
        };
        mOrientationListener.enable();
    }

... но я до сих пор не получаю никакой реакции (здесь не поднимаются тосты или событие onConfigurationChanged()).

0 ответов