为什么我的方向改变不被注意?

时间:2014-05-21 17:02:35

标签: java android-manifest android-orientation onconfigurationchanged android-configchanges

根据接受的答案here,我将此代码添加到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);
    }
}

...并修改了AndroidManifest.xml中的Activity元素。例如,改变它:

<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>

(我添加了&#34; configChanges&#34; jazz)。

但是,虽然mashing keypad.9确实在模拟器中翻转了方向,但没有提出toast(&#34上的断点;如果&#34; onConfigurationChanged()的行未被命中)。我做错了什么或省略了什么?

注意:删除&#34; | keyboardHidden&#34;来自&#34; configChanges&#34; AndroidManifest中的一行(这只是一个预感 - 我想知道它是否意味着&#34;不关注通过键盘进行的方向改变&#34;)。

更新

我尝试了araut的建议,以及来自Jared Burrows here的建议,但两者都不适合我。

冷,这只是一个模拟器问题?我还没有设备来测试它,所以我不能凭经验回答这个问题。

更新2

根据我读到的here,我想可能会添加一些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 个答案:

没有答案