2012-03-26 9 views
0

Ich versuche, meine App dazu zu bringen, Layouts zu ändern, wenn sich die Ausrichtung ändert. Dies ist der Code, den ich habe:Ändern von Layouts, wenn die Ausrichtung sich ändert Fehler

package com.wish.list; 

import com.wish.list.R; 
import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.OrientationEventListener; 
import android.view.WindowManager; 
import android.widget.ListView; 

public class ListOfLists extends Activity{ 

public void onCreate(Bundle savedInstanceState) { 


    // Orientation Change starts here: 
    private void setContentBasedOnLayout() 
     WindowManager winMan = (WindowManager) getBaseContext().getSystemService(Context.WINDOW_SERVICE); 

     if (winMan != null) 
     { 
      int orientation = winMan.getDefaultDisplay().getOrientation(); 

      if (orientation == 0) { 
       // Portrait 
       setContentView(R.layout.listsportrait); 
      } 
      else if (orientation == 1) { 
       // Landscape 
       setContentView(R.layout.listslandscape); 
      }    
     } 

    } 
    // End of Orientation Change 

     ListView listsList = (ListView) findViewById(R.id.lists); 
    } 
    } 
} 

Auf der Linie

public void onCreate(Bundle savedInstanceState) { 

ich diesen Fehler:

„Mehrere Markierungen auf dieser Linie:

- Syntaxfehler , fügen Sie "}" ein, um MethodBody zu vervollständigen

- überschreibt android.app.Activity.onCreate“

, auch gibt es eine Möglichkeit, es zu ändern, damit es nicht die Aktivität auf Orientierungsänderung neu starten muss? Ich habe es so, dass Facebook die Login-Daten des Nutzers beim Start der App überprüft und bei jeder Änderung der Ausrichtung erneut überprüft.

EDIT:

So ist der Code nun wie folgt aussehen sollte?

package com.wish.list; 

import com.wish.list.R; 
import android.app.Activity; 
import android.content.Context; 
import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.OrientationEventListener; 
import android.view.WindowManager; 
import android.widget.ListView; 

public class ListOfLists extends Activity{ 

public void onCreate(Bundle savedInstanceState) { 
} 
@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     setContentView(R.layout.listslandscape); 
    } 
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     setContentView(R.layout.listsportrait); 
    } 
} 
    // Orientation Change starts here: 
    private void setContentBasedOnLayout(){ 
     WindowManager winMan = (WindowManager)getBaseContext().getSystemService(Context.WINDOW_SERVICE); 

     if (winMan != null) 
     { 
      int orientation = winMan.getDefaultDisplay().getOrientation(); 

      if (orientation == 0) { 
       // Portrait 
       setContentView(R.layout.listsportrait); 
      } 
      else if (orientation == 1) { 
       // Landscape 
       setContentView(R.layout.listslandscape); 
      }    
     } 


    // End of Orientation Change 

     ListView listsList = (ListView) findViewById(R.id.lists); 
}  
} 

Oder lösche ich den setContentBasedOnLayout Abschnitt und ersetzen Sie es mit dem onConfigurationChanged Code?

Antwort

4

Insert "}" nach dem onCreate

Wenn Sie nicht wollen, um die Aktivität Neustart, wenn Ausrichtung geändert,

1.Declare unten im Manifest:

<activity android:name=".MyActivity" 
      android:configChanges="orientation|keyboardHidden" 
      android:label="@string/app_name"> 

2.Override die onConfigurationChanged in der Aktivität.

@Override 
public void onConfigurationChanged(Configuration newConfig) 
{ 
    super.onConfigurationChanged(newConfig); 

     // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) 
    { 
     setContentView(R.layout.listslandscape); 
    } 
    else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) 
    { 
     setContentView(R.layout.listsportrait); 
    } 
} 

bearbeiten

Ja, sollten Sie den setContentBasedOnLayout Abschnitt entfernen. Wenn sich die Ausrichtung ändert, wird onConfigurationChanged anstelle von onCreate aufgerufen.

+0

Bearbeitete OP mit Frage/neuer Code – Cole

+0

@Cole Haben Sie meine Antwort sehen? – dreamtale

Verwandte Themen