如果app已关闭并重新打开,则动态创建的imagebutton即使在使用后仍为null

时间:2014-07-24 21:03:32

标签: java android drag-and-drop sharedpreferences imagebutton

我正在编写一个应用程序,用户可以购买建筑物(拖放图像按钮),允许他们在背景中移动到他们想要的位置。拖放效果很好,图像按钮的动态创建效果也很好。我甚至有共享偏好工作,以便记住建筑物所在的最后一个点的坐标,但实际的图像按钮在应用程序关闭并重新打开时显示为null。因此,它给了我坐标,但没有那里的按钮。我的问题是,我如何拥有应用程序"记住"是否已创建图像按钮,以便我可以在保存的坐标处显示按钮?

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

您应该存储按钮所具有的图像的id,然后当调用onRestoreInstanceState时,或者如果您重新创建活动,则调用onCreate(),使用id重新初始化ImageButton。如果您是第一次动态加载它,则必须在重新创建活动时动态加载它!

将ImageButton作为全局变量。

private ImageButton myImageButton;

//Code....

public void onSaveInstanceState(Bundle b){
    super.onSaveInstanceState(b);//THIS IS VERY IMPORTANT
    b.putInt("image_1", idofyourimage); //This is where you store the id of the image
    //you can store all sorts of data in the bundle, so use whatever works
    //for you.
}



public void onRestoreInstanceState(Bundle b){
    super.onRestoreInstanceState(b);//IMPORTANT
    int imageId = b.getInt("image_1");
    myImageButton = new ImageButton();
    myImageButton.setImageResource(imageId);
    //Any other stuff you need to do
}