2017-03-21 4 views
1

버튼의 이미지 리소스를 변경하는 것이 목표입니다. 방향을 변경하지 않으면 올바르게 작동하지만 방향을 변경하면 이미지 자원이 설정되지 않았거나 업데이트되지 않을 수 있습니다. 화면 방향이 변경되었는지에 관계없이 다음 코드 (toggleButton 메서드)가 항상 실행된다는 것을 DebugMode에서 관찰합니다. buttonIconID도 항상 정확합니다. 문제는 방향을 변경 한 후에 버튼의 이미지 리소스가 설정되지 않는다는 것입니다.오리엔테이션 변경 후 Button의 ImageResource를 설정할 수 없습니다.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    ... 
    mTopBar = new TopBar(this); 
    ... 
} 

TopBar 생성자 : TopBar에서

public TopBar(MainActivity mainActivity) { 
    this.mainActivity = mainActivity; 

    mButton = (ImageButton) mainActivity 
      .findViewById(R.id.toggleButton); 
    mButton.setOnTouchListener(this); 
    ... 
} 

ToggleButton의 방법 : 당신의 도움에 대한

public void toggleButton(final int buttonIconID) { 
    mainActivity.runOnUiThread(new Runnable() { 

     @Override 
     public void run() { 
       mButton.setImageResource(buttonIconID); 
     } 
    }); 
} 

감사합니다!

답변

0

오리엔테이션을 변경할 때마다 Activity이 다시 생성됩니다. 따라서 방향을 변경하면 모든보기가 표준 구성 (또는 onCreate()/onResume() 등의 메소드에서 설정 한 설정)으로 재설정됩니다.

따라서 방향을 변경 한 후에 프로그래밍 방식으로 설정 한 이미지 자원을 유지하려면 데이터를 버퍼링하고 onCreate() 또는 onResume() 방법으로 다시 설정해야합니다.