簡體   English   中英

我第一次從另一個活動返回時沒有調用onConfigurationChanged

[英]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中加載該布局。

你為什么檢查isHorizo​​ntal和isVertical? 是否有可能其中一個是假的,並導致它失敗if條件?

除非您在AndroidManifest.xml<activity>下聲明了相應的屬性,否則不會調用onConfigurationChanged()方法:

android:configChanges="orientation"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM