![](/img/trans.png)
[英]Android onConfigurationChanged() is not being called in Activity
[英]onConfigurationChanged is not being called the first time I return from another activity
我有以下問題:當我將手機從縱向更改為橫向時,我想要消失的圖像。 當我參加當前活動並且我移動方向時,它工作得非常好。 如果我去另一個活動並回來,它也可以完全正常工作。 但問題是,在我返回主頁面后,第一次改變方向時不會調用onConfigurationChanged()。 當我返回時,圖像將顯示/不正確顯示,但是當我第一次更改方向后返回onConfigurationChanged()時,將不會調用圖像並且圖像將保持/不停留,直到我第二次更改方向。 你們的任何幫助都將非常感激! 這是我的代碼的幾個部分。 我已經在清單中放置了configChange-orientation權限,這不是問題。
@Override
public void onConfigurationChanged(Configuration newConfig) {L.p("configList",5200184);
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE&&isVertical==true) {
Logo.setVisibility(ImageView.GONE);
mainLogo.setVisibility(ImageView.GONE);
isHorizontal=true;
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT&&isHorizontal==true){
Logo.setVisibility(ImageView.VISIBLE);
mainLogo.setVisibility(ImageView.VISIBLE);
isVertical=true;
}
}
@Override
protected void onResume() {L.p("onResumeList", 5200113);
super.onResume();
Context ctx = getApplicationContext();
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
if((display.getOrientation() == Surface.ROTATION_90) || (display.getOrientation() == Surface.ROTATION_270))
{//Horizontal
L.p("you are resuming horizontal",5200124);
Logo.setVisibility(ImageView.INVISIBLE);
mainLogo.setVisibility(ImageView.INVISIBLE);
isHorizontal=true;
//isVertical=false;
}
else {//Vertical
L.p("you are resuming vertical",5200131);
Logo.setVisibility(ImageView.VISIBLE);
mainLogo.setVisibility(ImageView.VISIBLE);
isVertical=true;
// isHorizontal=false;
}
tracker.trackPageView("/deviceList");
}
謝謝!
可能有一個標志導致問題。 並且,遺憾的是,如果沒有看到完整的代碼,我們可能永遠不會知道問題是什么。
但是,請不要使用configChange hacks。 ( https://plus.google.com/109306462100800920982/posts/LuYGURGdX7Q可以很好地解釋極其罕見的情況。)
最有可能的是,onConfigurationChanged方法根本不需要重寫。 為配置更改重新創建活動時設置不同的布局。
無需覆蓋方向更改。 只需在layout-land
文件夾中聲明一個新的布局文件,該文件不包含圖像(或者圖像設置為不可見/消失)。 更改方向時,您的活動將在onCreate中加載該布局。
你為什么檢查isHorizontal和isVertical? 是否有可能其中一個是假的,並導致它失敗if條件?
除非您在AndroidManifest.xml
的<activity>
下聲明了相應的屬性,否則不會調用onConfigurationChanged()
方法:
android:configChanges="orientation"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.