2012-03-29 2 views
0

Ich habe eine Android-App, die mit der Anzeige eines Dialogfelds beginnt. Wenn ich die Ausrichtung auf Hochformat festlegen und auf einem Android 3.1-Emulator ausführen, wird das Dialogfeld angezeigt, aber sobald der Benutzer es ablehnt, wird es erneut angezeigt. Dies geschieht nicht auf dem 3.2-Emulator oder wenn die Ausrichtung nicht festgelegt ist. Wie verhindere ich, dass der Dialog unter Android 3.1 mit der Ausrichtung "Hochformat" zweimal angezeigt wird?Dialog wird zweimal angezeigt, wenn die Ausrichtung in Android 3.1 auf Hochformat eingestellt ist, funktioniert aber in 3.2

Hier ist der Code:

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(); 
    } 
} 

Hier ist das Manifest:

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

Wenn mein Emulator öffnet, ist es in der Landschaft, wenn es ankommt.

Antwort

3

Ich fand dies: android:configChanges. Hoffe, es hilft Ihnen :-)

Z. B:

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

Hmm ... es auf meinem 2.2 Emulator funktioniert ... Ich frage mich, was anders ist. Wo stelle ich die Funktion "onDestroy" ein, die Sie vorschlagen? (Ich habe keine Variable namens 'dialog', daher war ich mir nicht sicher, ob ich noch etwas anderes brauchte.) – BenH

+0

@BenH Sie können' onDestroy() 'in Ihre Aktivität einfügen. Tut mir leid, dass ich vergessen habe, 'onCreateDialog()' zu verwenden, so dass Sie [discussDialog (int)] (http://developer.android.com/reference/android/app/Activity.html#dismissDialog (int)) verwenden können. –