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

Unable to set ImageResource of Button after orientation change

目的是改变按钮的图片资源。如果我不改变方向它工作正常,但如果我改变方向,图像资源未设置(或可能未更新)。 我在 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 中的切换按钮方法:

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

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

感谢您的帮助!

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

所以如果你想在改变方向后保留你编程设置的图像资源,你应该缓冲数据并在onCreate()onResume()方法中重新设置。