2012-04-19 32 views
1

我在機器人編程初學者,現在我工作的這顯示在默認排序順序的數據,並且還提供了一個搜索工具Android應用程序後調用。爲此,我編寫了一個名爲搜索的活動,它將搜索內容並顯示在列表視圖中。我的問題是當我旋轉設備時,即使在重寫onConfigurationChanged方法後,Activity類的onCreate方法也會被調用。我還在清單文件中進行了以下更改以調用onConfigurationChanged方法。onCreate方法是調用onConfigurationChanged方法在Activity類

<activity 
    android:name=".Search" 
    android:configChanges="orientation|keyboardHidden" 
    android:screenOrientation="sensor" > 
</activity> 

我的搜尋活動如下:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    System.out.println("HERE AT ONCREATE"); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    System.out.println("HERE AT ON CONFIGURATION CHANGED"); 
    if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { 
     setContentView(R.layout.search_port); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     setContentView(R.layout.search_land); 
    } 
} 

所以輸出,同時旋轉設備將是:

  1. 在這裏ON配置已更改

  2. 在這裏ONCREATE

我不想讓onCreate()方法,同時旋轉設備調用。請幫我解決這個問題。我正在使用Android 2.2 SDK和Samsung Galaxy Tab(7英寸顯示器)。

+1

什麼是清單文件,你的目標API版本。你檢查了這個鏈接嗎?如果目標是13或更高,似乎你需要「屏幕」也http://developer.android.com/guide/topics/manifest/activity-element.html – kosa 2012-04-19 15:32:14

+0

@thinksteep我不知道我做錯了什麼,而調試我可以看到onConfigurationChanged方法稍後調用,它再次調用該活動的onCreate方法。我覺得它很奇怪。 – Krishna 2012-04-19 16:02:20

+0

你嘗試這個http://developer.android.com/guide/topics/resources/runtime-changes.html – kosa 2012-04-19 16:11:36

回答

2

你想與上面的代碼來完成什麼可以更簡單地完成。

如果你改變你的佈局文件名是既相同:search_layout.xml這種方式將它們放置在您的項目:

<project>/res/layout/search_layout.xml  // Portrait Layout 
<project>/res/layout-land/search_layout.xml // Landscape Layout 

然後修改你的活動是這樣的:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Log.i("Search Activity", "onCreate() was called."); 
} 

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    Log.i("Search Activity", "onConfigurationChanged was called."); 
} 

這我如何在我的Activity中設置它,並且onCreate()方法只被調用一次。

+0

感謝你的答案,即使使用xml文件佈局具有相同的名稱,我的問題onCreate方法不會結束,我需要做一些初始化,在活動的開始。但是在改變設備的方向時,它不會重新創建或重新初始化相同的事物。 – Krishna 2012-04-19 16:00:35

-4

有沒有辦法避免。當您旋轉設備時,您的活動將被終止並重新創建。沒有辦法避免它,但是你可以重載onSaveInstanceState(),它將在活動被銷燬前被調用。

+3

清單文件本身的configChanges允許您避免調用onCreate(重新創建)。正確閱讀此鏈接。 http://developer.android.com/reference/android/app/Activity.html#ConfigurationChanges – kosa 2012-04-19 15:34:40

+0

這是一個錯誤的答案。你可以在活動清單文件中聲明configChanges,這樣就不會重新創建活動 – akash89 2016-10-08 19:46:57

相關問題