Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.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_Android Activity_Android Studio_Mpandroidchart - Fatal编程技术网

Android 如何将图表从一个活动传递到另一个活动?

Android 如何将图表从一个活动传递到另一个活动?,android,android-activity,android-studio,mpandroidchart,Android,Android Activity,Android Studio,Mpandroidchart,我使用MPAndroidChart库创建的图表使用来自web服务的数据填充,这需要一点时间。因此,在这一次,我希望显示一个Splashscreen,以便可以在后台进行网络呼叫,形成一个图表,然后将其传递到要显示的MainActivity。 为此,我希望将两个条形图和一个RadarChart对象从Splachscreen活动传递到Main活动 那么我如何才能做到这一点呢?传递数据而不是图形。您可以按如下方式传递数据: Intent i = new Intent(getApplicationCont

我使用MPAndroidChart库创建的图表使用来自web服务的数据填充,这需要一点时间。因此,在这一次,我希望显示一个Splashscreen,以便可以在后台进行网络呼叫,形成一个图表,然后将其传递到要显示的MainActivity。 为此,我希望将两个条形图和一个RadarChart对象从Splachscreen活动传递到Main活动


那么我如何才能做到这一点呢?

传递数据而不是图形。您可以按如下方式传递数据:

Intent i = new Intent(getApplicationContext(), NewActivity.class);
i.putExtra("new_variable_name","value");
startActivity(i);
并通过以下方式获得新的活动:

Bundle extras = getIntent().getExtras();
if (extras != null) {
    String value = extras.getString("new_variable_name");
}
根据您拥有的数据类型,您可能必须以可打包或可序列化的方式传递数据


然后,您可以使用您传递的数据绘制新活动的图表。

在我看来,您的总体设计方法需要稍加改进

首先,我建议您避免使用splash活动来“包含”网络操作。从用户体验的角度来看,这可能很糟糕,因为从一次使用到下一次使用,启动屏幕的显示时间可能不确定。如果启动屏幕停留超过(比如)两秒钟,那么应用程序可能看起来没有响应。如果您坚持这样做,我建议启动屏幕至少包含动态状态信息,以告知用户发生了什么

接下来,确保在专用线程上执行网络操作,而不是在主UI线程上

对于
main活动
引用获取的数据,我建议您查看单例模式以将其保存在内存中。也就是说,要么使用专用的单例对象,要么将其保存在
应用程序的子类中。这样,网络操作在该单例中设置数据,而
main活动从单例中获取数据。或者,当您为
main活动
创建
Intent
时,
可能包含一个字符串,该字符串充当获取数据的键。我之所以提出这种策略,是因为我假设可能涉及大量数据。另一方面,如果数据量很小,您可能可以将数据本身放入
包中,或者作为字符串中的JSON或其他形式

请记住,如果应用程序转到后台,然后再恢复,则可能会出现这样的情况:活动堆栈已恢复,但应用程序的所有“全局”状态都已消失。这意味着您的
main活动将被恢复,但您希望位于singleton类中的数据不再存在。您的
main活动
应该有办法解决这个问题,也许可以启动一个新的网络请求