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

基于此处接受的答案,我将此代码添加到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元素。 例如,改变它:

   

……变成这个:

   

(我添加了“configChanges”爵士乐)。

但是,虽然mashing keypad.9确实在模拟器中翻转方向,但没有提出吐司(onConfigurationChanged()的“if”行上的断点没有被击中)。 我做错了什么或省略了什么?

注意:当我从AndroidManifest中的“configChanges”行中删除“| keyboardHidden”时没有任何区别(这只是一种预感 – 我想知道它是否意味着“不注意通过键盘进行的方向更改”)。

UPDATE

我尝试了araut的建议,还有Jared Burrows的建议,但是没有一个适合我。

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

更新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()事件引发吐司)。

Interesting Posts