2012-03-29 11 views
0

ダイアログを表示することから始まるAndroidアプリがあります。私は向きをポートレートに設定し、Android 3.1エミュレータで実行するとダイアログが表示されますが、ユーザーが一度それを終了すると再び表示されます。これは、3.2エミュレータで、または方向が設定されていない場合には発生しません。ポートフォリオをポートレートに設定してAndroid 3.1でダイアログが2回表示されないようにするにはどうすればよいですか?Android 3.1では向きがポートレートに設定されているときにダイアログが2回表示されますが、3.2でうまく動作します。

は、ここでは、コードです:

<uses-sdk android:minSdkVersion="7" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TestActivity" 
     android:label="@string/app_name" 
     android:screenOrientation="portrait" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

私のエミュレータが開いたらそれが重要ならば、それは、風景の中にあります:

public class TestActivity extends Activity {  
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
     showDialog(0); 
    } 

    protected Dialog onCreateDialog(int id) { 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Message.") 
      .setPositiveButton("Ok.", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        // nothing 
       } 
      });   
     return builder.create(); 
    } 
} 

ここでマニフェストがあります。

答えて

3

これが見つかりました:android:configChanges

<activity 
    ... 
    android:configChanges="orientation|keyboardHidden"" /> 
+0

うーん...それは私の2.2エミュレータ上で動作します...私は違うのだろうか。それはあなた:-)

例えばお役に立てば幸いです。あなたが提案する 'onDestroy'関数はどこに置くのですか? (私は 'dialog'という変数を持っていないので、別のものが必要なのかどうかは分かりませんでした。) – BenH

+0

@BenHあなたのアクティビティに' onDestroy() 'を置くことができます。申し訳ありません、onCreateDialog()を使用するのを忘れてしまったので、[dismissDialog(int)](http://developer.android.com/reference/android/app/Activity.html#dismissDialog(int))を使用できます。 –

関連する問題