2014-03-19 41 views
2

我在這裏有一個問題,我需要從數據庫中顯示數據並在我的應用程序中以表格的形式查看它。一切都很順利,但由於表格列很長(由於從數據庫接收到數據),因此我決定將方向設置爲橫向以便於查看(我猜)。執行此代碼後,執行setRequestedOrientation後,兩次調用onCreate

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

onCreate()函數被調用兩次。自從包括log.i以來,我知道它被召喚了兩次。我所有的log.i都打了兩次電話。我的日誌會顯示這樣的:

03-19 14:13:53.401: I/loop check(30510): loop 
03-19 14:13:54.112: I/jObjLength(30510): 5 
03-19 14:13:54.112: I/JSON(30510): jsonObj = work0 
03-19 14:13:54.162: I/JSON(30510): jsonObj = work1 
03-19 14:13:54.162: I/JSON(30510): jsonObj = work2 
03-19 14:13:54.172: I/JSON(30510): jsonObj = work3 
03-19 14:13:54.172: I/JSON(30510): jsonObj = work4 

但是,相反,它表明這一點:

03-19 14:30:12.801: I/loop check(30510): loop 
03-19 14:30:12.921: I/jObjLength(30510): 5 
03-19 14:30:12.921: I/JSON(30510): jsonObj = work0 
03-19 14:30:12.931: I/JSON(30510): jsonObj = work1 
03-19 14:30:12.941: I/JSON(30510): jsonObj = work2 
03-19 14:30:12.951: I/JSON(30510): jsonObj = work3 
03-19 14:30:12.951: I/JSON(30510): jsonObj = work4 
03-19 14:30:12.981: I/loop check(30510): loop 
03-19 14:30:13.042: I/jObjLength(30510): 5 
03-19 14:30:13.042: I/JSON(30510): jsonObj = work0 
03-19 14:30:13.042: I/JSON(30510): jsonObj = work1 
03-19 14:30:13.052: I/JSON(30510): jsonObj = work2 
03-19 14:30:13.052: I/JSON(30510): jsonObj = work3 
03-19 14:30:13.062: I/JSON(30510): jsonObj = work4 

這之後我實現setRequestedOrientation發生。任何人都可以解釋爲什麼會發生這種情況,並有什麼解決方案。由於

繼承人我的onCreate類

public void onCreate(Bundle savedInstanceState) { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    Log.i("loop check", "loop"); 
    super.onCreate(savedInstanceState); 

    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_work_listing); 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() 
      .permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    tblLay = (TableLayout) findViewById(R.id.tblLayout); 

    jsonParser = new JSONParser(); 
    jObj = jsonParser.getJSONFromUrl(URL); 

    txtOrderN = new TextView(getApplicationContext()); 
    txtCabinetN = new TextView(getApplicationContext()); 
    txtAssignP = new TextView(getApplicationContext()); 
    txtActualP = new TextView(getApplicationContext()); 
    txtStatS = new TextView(getApplicationContext()); 

    String jsonObj; 

    for (int i = 0; i < jObj.length(); i++) { 
     jsonObj = "work"; 
     jsonObj = jsonObj + i; 

     try { 
      tblRow = new TableRow(getApplicationContext()); 
      Log.i("JSON", "jsonObj = " + jsonObj); 
      txtOrderN.setText(jObj.getJSONObject(jsonObj).getString(
        "orderN")); 
      txtCabinetN.setText(jObj.getJSONObject(jsonObj).getString(
        "cabinetN")); 
      txtAssignP.setText(jObj.getJSONObject(jsonObj).getString(
        "assignP")); 
      txtActualP.setText(jObj.getJSONObject(jsonObj).getString(
        "actualP")); 
      txtStatS.setText(jObj.getJSONObject(jsonObj).getString("statS")); 
      txtOrderN = new TextView(getApplicationContext()); 
      txtCabinetN = new TextView(getApplicationContext()); 
      txtAssignP = new TextView(getApplicationContext()); 
      txtActualP = new TextView(getApplicationContext()); 
      txtStatS = new TextView(getApplicationContext()); 

      tblRow.addView(txtOrderN); 
      tblRow.addView(txtCabinetN); 
      tblRow.addView(txtAssignP); 
      tblRow.addView(txtActualP); 
      tblRow.addView(txtStatS); 
      tblLay.addView(tblRow); 

     } catch (Exception e) { 
      Toast.makeText(getApplicationContext(), "Error " + e, 
        Toast.LENGTH_LONG).show(); 
      Log.i("Error ", "" + e); 
     } 

    } 

} 

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.zeta.workorder" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="9" 
    android:targetSdkVersion="18" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.zeta.workorder.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.zeta.workorder.WorkListingActivity" 
     android:label="@string/title_activity_work_listing" > 
    </activity> 
</application> 

</manifest> 
+0

你還必須同時申報orientaion在活動中您的清單file.also setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);在設置contentview後使用它。 – Dev

+0

你會告訴我如何在Android清單 – Wan999

回答

2
in your manifest file 

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.zeta.workorder" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
android:minSdkVersion="9" 
android:targetSdkVersion="18" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
android:allowBackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/AppTheme" > 
<activity 
    android:name="com.zeta.workorder.MainActivity" 
    android:label="@string/app_name" > 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 

     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
<activity 
    android:name="com.zeta.workorder.WorkListingActivity" 
    android:label="@string/title_activity_work_listing" 
    android:screenOrientation="landscape" > 
</activity> 

+0

上聲明它這個工程!我剛剛在清單中添加了android:screenOrientation =「landscape」,並從我的onCreate類中刪除了setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)。謝謝 – Wan999

+0

good.glad幫助 – Dev

相關問題