Android GetLastNonConfiguration实例()

Android GetLastNonConfiguration实例(),android,Android,长话短说,我必须开发一个小应用程序,在应用程序启动时显示随机图像。我很快发现,当设备方向改变时,主活动会重新加载,并选择一个新的图像。这个网站上的某个人帮我解决了这个问题,他在OnCreate()外部声明了一个空映像,然后在OnCreate()内部声明了一个空映像 image = (Bitmap) getLastNonConfigurationInstance(); if (image == null) { image = getRandomImage(); }

长话短说,我必须开发一个小应用程序,在应用程序启动时显示随机图像。我很快发现,当设备方向改变时,主活动会重新加载,并选择一个新的图像。这个网站上的某个人帮我解决了这个问题,他在
OnCreate()
外部声明了一个空映像,然后在
OnCreate()内部声明了一个空映像

image = (Bitmap) getLastNonConfigurationInstance();

    if (image == null) {
        image = getRandomImage();
    }
    setRandomImage(image);
这很有效。我现在的问题是,我必须在应用程序中添加一个随机的“当日报价”,但我无法实现这一点。当设备方向更改时,将提取新的报价。我原以为下面的方法行得通,但行不通:

message = (String) getLastNonConfigurationInstance();

    if (message == null) {
        message = getRandomMessage();
    }
    setRandomMessage(message);

我可能只是不明白
getLastNonConfigurationInstance()
是如何工作的,所以如果有人能帮我的话,我将不胜感激。

将为您提供由
OnRetainonconfigurationInstance()返回的对象。

使用此机制只能保存/检索一个对象。所以,只需将消息和图像包装到另一个类中并使用它

更新:

public class ConfigWrapper{
    public Bitmap image;
    public String message;
}
然后使用它:

ConfigWrapper config = (ConfigWrapper) getLastNonConfigurationInstance();

if(config == null || config.image == null ){ 
    image = getRandomImage();
} else {
    image = config.image;
}
setRandomImage(image);
然后在
onRetainonConfiguration实例()中创建配置:

将为您提供由
onretainonconfigurationinstance()返回的对象

使用此机制只能保存/检索一个对象。所以,只需将消息和图像包装到另一个类中并使用它

更新:

public class ConfigWrapper{
    public Bitmap image;
    public String message;
}
然后使用它:

ConfigWrapper config = (ConfigWrapper) getLastNonConfigurationInstance();

if(config == null || config.image == null ){ 
    image = getRandomImage();
} else {
    image = config.image;
}
setRandomImage(image);
然后在
onRetainonConfiguration实例()中创建配置:


定义“它不起作用”。它崩溃了?它总是返回null?您需要用try{}catch(Exception){…}包围该强制转换,它将不再崩溃。发生这种情况是因为您试图强制转换为与对象不同的类型。回答如下:为您的注释锁定前进。定义“它不工作”。它崩溃了?它总是返回null?您需要用try{}catch(Exception){…}包围该强制转换,它将不再崩溃。发生这种情况是因为您试图强制转换为与对象不同的类型。回答如下:锁定以获取您的评论。我能说服您根据我上面的内容向我展示一个示例吗?谢谢。我将尝试执行此操作并报告。当我说
config=(ConfigWrapper)getLastNonConfigurationInstance()时,得到的错误是“配置无法解析为变量”Do ConfigWrapper config=(ConfigWrapper)getLastNonConfigurationInstance();getLastNonConfigurationInstance()已解除强制。看我能不能说服你给我看一个基于我上面的例子?谢谢。我将尝试执行此操作并报告。当我说
config=(ConfigWrapper)getLastNonConfigurationInstance()时,得到的错误是“配置无法解析为变量”Do ConfigWrapper config=(ConfigWrapper)getLastNonConfigurationInstance();getLastNonConfigurationInstance()已解除强制。看见