使用 HashMap 在 android 中的两个活动之间传递数据
Pass data between two activities in android using HashMap
我试图在我的 android 应用程序中的两个活动之间传递数据,我想使用 HashMap(我不想使用 意图)。这是我的代码:
DataHolder.java
public final class DataHolder {
private static Map<String, WeakReference<Object>> data = new HashMap<String, WeakReference<Object>>();
public static void setF_TaskId(int F_TaskId) {
data.put("F_TaskId", new WeakReference<Object>(F_TaskId));
}
public static int getF_TaskId() {
WeakReference<Object> objectWeakReference = data.get("F_TaskId");
return (Integer)objectWeakReference.get();
}
}
先设置值activity
DataHolder.setF_TaskId(TaskId);
获取其他价值activity
F_TaskId = DataHolder.getF_TaskId();
当我使用它在 activity1 到 activity2 之间传递数据时它会起作用,但之后当在 activity2 到 activity3 之间传递数据时, objectWeakReference.get()
return null 所以转换为 (Integer)
导致错误。
在 activity2 中,我再次为 activity3 设置数据。我该如何解决?
我认为你应该使用这种方法
先设置值activity
public static DataHolder dh = new DataHolder();
DataHolder.setF_TaskId(TaskId);
获得其他方面的价值activity
DataHolder dh = FirstActivity.dh;
F_TaskId = dh.getF_TaskId();
使用 WeakReference<Object>
将在代码到达第二个 activity 中的 setContentView(R.layout.Some_Activity)
行时清除 DataHolder
class 中的 data
变量。所以我使用 Object
而不是 WeakReference<Object>
.
DataHolder.java
public final class DataHolder {
private static Map<String, Object> data = new HashMap<String, Object>();
public static void setF_TaskId(int F_TaskId) {
data.put("F_TaskId", F_TaskId);
}
public static int getF_TaskId() {
Object resault = data.get("F_TaskId");
return (Integer)resault;
}
}
我试图在我的 android 应用程序中的两个活动之间传递数据,我想使用 HashMap(我不想使用 意图)。这是我的代码:
DataHolder.java
public final class DataHolder {
private static Map<String, WeakReference<Object>> data = new HashMap<String, WeakReference<Object>>();
public static void setF_TaskId(int F_TaskId) {
data.put("F_TaskId", new WeakReference<Object>(F_TaskId));
}
public static int getF_TaskId() {
WeakReference<Object> objectWeakReference = data.get("F_TaskId");
return (Integer)objectWeakReference.get();
}
}
先设置值activity
DataHolder.setF_TaskId(TaskId);
获取其他价值activity
F_TaskId = DataHolder.getF_TaskId();
当我使用它在 activity1 到 activity2 之间传递数据时它会起作用,但之后当在 activity2 到 activity3 之间传递数据时, objectWeakReference.get()
return null 所以转换为 (Integer)
导致错误。
在 activity2 中,我再次为 activity3 设置数据。我该如何解决?
我认为你应该使用这种方法
先设置值activity
public static DataHolder dh = new DataHolder();
DataHolder.setF_TaskId(TaskId);
获得其他方面的价值activity
DataHolder dh = FirstActivity.dh;
F_TaskId = dh.getF_TaskId();
使用 WeakReference<Object>
将在代码到达第二个 activity 中的 setContentView(R.layout.Some_Activity)
行时清除 DataHolder
class 中的 data
变量。所以我使用 Object
而不是 WeakReference<Object>
.
DataHolder.java
public final class DataHolder {
private static Map<String, Object> data = new HashMap<String, Object>();
public static void setF_TaskId(int F_TaskId) {
data.put("F_TaskId", F_TaskId);
}
public static int getF_TaskId() {
Object resault = data.get("F_TaskId");
return (Integer)resault;
}
}