2011-11-14 47 views
0

我有一个ListActivity,当手机的方向是纵向时我要显示,并且我有另一个正常的活动,当用户将手机旋转到横向模式时,我想显示该活动。如何处理Android上的屏幕旋转

一些代码:

public class ListActivity extends ListActivity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (this.getResources(). getConfiguration(). orientation == Configuration.ORIENTATION_PORTRAIT) { 
      //Do stuff 
     }else if (this.getResources(). getConfiguration(). orientation == Configuration.ORIENTATION_LANDSCAPE) { 
      Intent myIntent = new Intent(getApplicationContext(), AnotherActivity.class); 
      startActivity(myIntent); 
     } 
    } 
} 

这种方法有效,但也存在一些问题。有没有更正确的方法?这种方法的问题在于,当您旋转手机并按下后退按钮时,屏幕会变黑,因为手机未旋转。那么我应该以另一种方式实现轮换,还是以某种方式修改后退按钮,以便用户不能返回到前一个活动?

+0

您好!你已经得到了答案,所以请选择他们或他们中的一些人或其中的一个人作为答案。其他方面它不礼貌:-( – Gangnus

+0

对不起,您的评论不是我正在寻找的,但我设法以另一种方式解决它。你说的是正确的,所以我将它标记为答案。 – Sane

回答

1

这是一种正常的方式。但它很长 - 等待5秒。

还有另一种方法:

寄存器取向变化作为配置变化

A.

activity android:name=".SomeActivity" 
android:label="@string/app_name" 
android:configChanges="orientation" 

并处理它作为一个配置的变化。

B.

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

    SetupActivity(); 
}