方向更改后无法设置Button的ImageResource

时间:2017-03-21 08:34:58

标签: android screen-orientation

目的是改变按钮的图像资源。如果我没有更改方向,它可以正常工作,但如果我更改方向,则不会设置(或可能不更新)图像资源。 我在DebugMode中观察到,无论屏幕方向是否改变,总是执行以下代码(toggleButton方法)。 buttonIconID也始终正确。问题是,在更改方向后未设置按钮的图像资源。

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

TopBar构造函数:

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

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

toggleButton方法:

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

每次更改方向时都会重新创建Activity。因此,当您更改方向时,所有视图都会重置为其标准配置(或您在onCreate() / onResume()等方法中设置的设置。

因此,如果要保留在更改方向后以编程方式设置的图像资源,则应缓冲数据并在onCreate()onResume()方法中重新设置。