2012-03-26 14 views
0

オリエンテーションが変わったときにレイアウトを変更しようとしています。これは私が持っているコードです:私はこのエラーを取得するラインオリエンテーションが変わったときにレイアウトを変更する

public void onCreate(Bundle savedInstanceState) { 

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

:この行で

「複数のマーカー:

- 構文エラーを、 "}"を挿入してMethodBodyを完成させる

は - 」

をandroid.app.Activity.onCreateが上書きされます。また、それはオリエンテーションの変化に活動を再起動する必要はありませんので、それを変更する方法はありますか?私はFacebookがアプリの開始時にユーザのログインの詳細をチェックし、オリエンテーションが変わるたびにそれを再チェックしなければならない。

EDIT:

ので、コードは次のようになりますか?

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

または私はsetContentBasedOnLayoutセクションを削除し、onConfigurationChangedのコードに置き換えますか?マニフェストでのonCreate

答えて

4

挿入"}"向きが変わったときにアクティビティの再起動をしたくない場合は、

以下1.Declare:

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

2.アクティビティ内のonConfigurationChangedをオーバーライドします。

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

編集

はい、あなたはsetContentBasedOnLayoutセクションを削除する必要があります。方向が変更された場合、onCreateの代わりにonConfigurationChangedが呼び出されます。

+0

質問/新規コード付き編集OP – Cole

+0

@コールあなたは私の答えを見たことがありますか? – dreamtale

関連する問題