我有3个活动,连接方式如下: A - > B - > C.
在A上输入将在C中使用的文本,然后打开B并输入要在C中使用的另一个文本。但是当C打开时,会产生空错误。
我想出了一个解决方案,然后启动A然后直接转到C和onCreate of C,启动B,好像是从A到B。
有更好的解决方案吗?我的解决方案是否合适还是会导致更多问题而不是修复?谢谢你的帮助。
答案 0 :(得分:2)
有几个选项 - Intent
附加内容,SharedPreferences
,SQLite
数据库,内部/外部存储,Application
类,静态数据类等。
对于您已解释的情况,我建议使用SharedPreferences
来存储数据,这是相对简单的方法,您可以随时从任何Activity
或类访问存储的数据,这是一个简单的用法导:
将数据输入SharedPreferences:
SharedPreferences.Editor editor = getSharedPreferences("YourPrefsFile", MODE_PRIVATE).edit();
editor.putString("name", "Elena");
editor.putInt("idName", 12);
editor.apply();
从SharedPreferences获取数据:
SharedPreferences prefs = getSharedPreferences("YourPrefsFile", MODE_PRIVATE);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
String name = prefs.getString("name", "");
int idName = prefs.getInt("idName", 0);
}
答案 1 :(得分:1)
在这种情况下你有4个解决方案
答案 2 :(得分:0)
这不是一个好主意,因为它们可能会延迟启动活动,因为您将在活动B和C的onCreate方法中执行其他操作。由于显示延迟,将来会导致性能问题活动。
你可以做的事情......
答案 3 :(得分:0)
我认为,您可以通过意图将输入传递给下一个活动。
因为它是文本输入,
intent.putExtra("A_Activity_Input","YourinputString"); //in activity A
然后活动B开始,使用
获取字符串String Input_A_Activity=getIntent().getStringExtra("A_Activity_Input");
之后从B开始C活动时,使用意图发送两个数据
intent.putExtra("A_Activity_Input",Input_A_Activity);
intent.putExtra("B_Activity_Input","YourinputString");
在活动C中,从意图中获取字符串。
由于您只需要处理数据,将其存储在SQL或SharedPref或其他内容中会浪费内存