我第一次从另一个活动返回时没有调用onConfigurationChanged

时间:2012-02-15 00:53:14

标签: android orientation screen-orientation orientation-changes onconfigurationchanged

我有以下问题:当我将手机从纵向更改为横向时,我想要消失的图像。当我参加当前活动并且我移动方向时,它工作得非常好。如果我去另一个活动并回来,它也可以完全正常工作。但问题是,在我返回主页面后,第一次改变方向时不会调用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");
    }

谢谢!

4 个答案:

答案 0 :(得分:0)

无需覆盖方向更改。只需在layout-land文件夹中声明一个新的布局文件,该文件不包含图像(或图像设置为不可见/消失)。更改方向时,您的活动将在onCreate中加载该布局。

答案 1 :(得分:0)

为什么要检查isHorizo​​ntal和isVertical? 是否有可能其中一个是假的,并导致它失败if条件?

答案 2 :(得分:0)

除非您在onConfigurationChanged()中的<activity>下声明相应的属性,否则不会调用AndroidManifest.xml方法:

android:configChanges="orientation"

答案 3 :(得分:0)

可能有一个标志导致问题。并且,遗憾的是,如果没有看到完整的代码,我们可能永远不会知道问题是什么。

但是,请不要使用configChange hacks。 (https://plus.google.com/109306462100800920982/posts/LuYGURGdX7Q可以很好地解释极其罕见的情况。)

最有可能的是,onConfigurationChanged方法根本不需要重写。为配置更改时重新创建活动时设置不同的布局。