[英]onCreate method is called after calling onConfigurationChanged method in an Activity class
我是android編程的初學者,現在我在一個android應用程序上工作,該應用程序默認情況下按排序順序顯示數據,並且還提供搜索功能。 為此,我編寫了一個名為search的活動,它將搜索內容並顯示在列表視圖中。 我的問題是,當我旋轉設備時,即使覆蓋了onConfigurationChanged方法,也會調用Activity類的onCreate方法。 我還對清單文件進行了以下更改,以調用onConfigurationChanged方法。
<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);
}
}
因此,旋轉設備時的輸出為:
此處的配置已更改
在這里在線
我不想在旋轉設備時調用onCreate()
方法。 請幫我解決這個問題。 我正在將Android 2.2 SDK與Samsung Galaxy Tab(7英寸顯示屏)配合使用。
您嘗試使用以上代碼完成的任務可以更簡單地完成。
如果將布局文件名更改為相同: 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()
方法僅被調用一次。
沒有辦法避免它。 旋轉設備時,活動將被殺死並重新創建。 無法避免這種情況,但是您可以重寫onSaveInstanceState(),它將在活動被銷毀之前被調用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.