Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 保存自定义视图';什么州?_Android_View_Save_Viewstate_State - Fatal编程技术网

Android 保存自定义视图';什么州?

Android 保存自定义视图';什么州?,android,view,save,viewstate,state,Android,View,Save,Viewstate,State,我有一个应用程序,其中用户点击屏幕(其中自定义视图使用画布),在用户点击的位置显示位图。我的应用程序运行正常,除非我按下“主页”按钮并退出活动。这是用户点击屏幕并放置位图(在按下home按钮之前)时的外观示例: 当用户按下“主页”按钮,然后返回应用程序时,它将停止正常工作。放置在背景中的位图网格以及绘制在画布上的所有其他位图球将消失。剩下的唯一一个球是最后一个放置的球。不仅如此,活动也会冻结,只允许用户在几秒钟后按下任何按钮。这是用户按下“主页”按钮并返回活动后屏幕的显示方式(与上图相同的屏幕)

我有一个应用程序,其中用户点击屏幕(其中自定义视图使用画布),在用户点击的位置显示位图。我的应用程序运行正常,除非我按下“主页”按钮并退出活动。这是用户点击屏幕并放置位图(在按下home按钮之前)时的外观示例:

当用户按下“主页”按钮,然后返回应用程序时,它将停止正常工作。放置在背景中的位图网格以及绘制在画布上的所有其他位图球将消失。剩下的唯一一个球是最后一个放置的球。不仅如此,活动也会冻结,只允许用户在几秒钟后按下任何按钮。这是用户按下“主页”按钮并返回活动后屏幕的显示方式(与上图相同的屏幕):

如何保存自定义视图的状态,以便在再次启动活动时保持不变?(或者,如果我没有正确处理这个问题,是否有其他方法来解决它?)。以下是我在自定义曲面视图中暂停和恢复方法的代码:

public void pause(){
    isRunning = false;
    while(true){
        try {
            ourThread.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        break;
    }
    ourThread = null;
}

public void resume(){
    isRunning = true;
    ourThread = new Thread(this);
    ourThread.start();

}
我已经找了一段时间了,但似乎找不到解决办法。如果需要,将提供其他代码。谢谢

参考此

您需要使用onResume()在屏幕上绘制视图


阅读此处的activity lifecycle,找出第二个屏幕中未显示完整视图背后的实际原因……为此,您可能需要重新构造一点活动代码。

您需要在onPause()上保存所有必需的数据,例如球坐标和活动状态,然后在onResume()上恢复所有内容

您可以存储和恢复任何Java对象。
阅读有关OnRetainOnConfiguration Instance()和GetLastNoConfiguration Instance()的更多信息,网址为

如何在屏幕上再次绘制相同的视图而不绘制新视图?在第二个屏幕中缺少某些视图(但不是全部)之前,我想保持视图中的球和网格不变,这意味着您必须在onStart()或onResume()方法中使用一些代码,您需要查看它。。。onCreate()将在活动第一次/一次启动时被调用。。当用户按下home按钮并返回应用程序时,将再次调用onStart()和onResume()。。。您必须查找某些视图丢失的实际原因(记住活动生命周期),然后才能解决您的问题…我将在原始帖子的编辑中提供有关resume和pause方法的代码。我似乎找不到任何问题,也许你可以帮忙?这是一个问题,因为一旦球被放置,它的坐标被删除。只要用户点击屏幕放置另一个球,坐标就会被新球的坐标覆盖。