![](/img/trans.png)
[英]Android - Pass Data Between Two Activities get NullPointerException
[英]Pass data between two activities in android using HashMap
我試圖在我的android應用程序中的兩個活動之間傳遞數據,並且我想使用HashMap (我不想使用Intent )。 這是我的代碼:
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();
}
}
在第一個活動中設置值
DataHolder.setF_TaskId(TaskId);
在其他活動中獲得價值
F_TaskId = DataHolder.getF_TaskId();
當我將其用於在活動1和活動2之間傳遞數據時,它將起作用,但是之后,當在活動2和活動3之間傳遞數據時, objectWeakReference.get()
返回null,因此objectWeakReference.get()
為(Integer)
會導致錯誤。 在活動2中,我再次為活動3設置數據。 我該如何解決?
我認為您應該使用這種方法
在第一個活動中設置值
public static DataHolder dh = new DataHolder();
DataHolder.setF_TaskId(TaskId);
在其他活動中獲得價值
DataHolder dh = FirstActivity.dh;
F_TaskId = dh.getF_TaskId();
當代碼到達第二個活動中的setContentView(R.layout.Some_Activity)
行時,使用WeakReference<Object>
將清除DataHolder
類中的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;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.