1

エミュレーターと中小規模の携帯電話で正常に動作するアプリを作成しましたが、タブレットで実行している間は常に横向きモードのみが表示されます。また、別々のレイアウトとレイアウトランドレイアウトを使用しました。その背後にある理由。これはコードです:

public class SplashActivity extends FragmentActivity
{
  public void onCreate(Bundle paramBundle)
  {
    super.onCreate(paramBundle);
    requestWindowFeature(1);
    getWindow().setFlags(1024, 1024);

  FragmentManager fragmentmanager = getSupportFragmentManager();
  FragmentTransaction fragmenttransaction = fragmentmanager.beginTransaction();
  if (getResources().getConfiguration().orientation == 
      Configuration.ORIENTATION_LANDSCAPE) {
      setRequestedOrientation(0);
  }
  else
  {
      setRequestedOrientation(1);  
  }
  fragmenttransaction.commit();

    setContentView(R.layout.welcome);
    new Handler().postDelayed(new SplashThread(), 2000L);
  }

  class SplashThread implements Runnable
  {
    SplashThread()
    {
    }

    public void run()
    {
      SplashActivity.this.startActivity(new Intent(SplashActivity.this, McqHomePage.class));
      SplashActivity.this.finish();
    }
  }
}

助けてください。よろしくお願いします。

4

1 に答える 1

1

向きを気にしない場合は、このコードを完全に省略してもかまいません。

if (getResources().getConfiguration().orientation == 
      Configuration.ORIENTATION_LANDSCAPE) {
      setRequestedOrientation(0);
  }
  else
  {
      setRequestedOrientation(1);  
  }

上記のコードには、特定の方向の変更が常に縦向きになるという醜い副作用もあります。たとえば、逆横向きはコードでキャッチされません。さらに、値が変更されてもコードが壊れないように、0 または 1 を使用する代わりに、提供されている定数を使用してください。

それまでの間、マニフェストを確認してください。そこに方向属性を追加したに違いありません。

于 2012-09-23T05:36:28.973 に答える