当前位置: 首页 > 知识库问答 >
问题:

使用HashMap在android中的两个活动之间传递数据

欧阳洲
2023-03-14

我试图在我的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();

当我用它在activity1到activity2之间传递数据时,它会起作用,但在那之后,当在activity2到activity3之间传递数据时,objectWeakReference。get()返回null,因此强制转换为(整数)会导致错误。在activity2中,我再次为activity3设置了数据。我如何解决这个问题?

共有2个答案

臧俊杰
2023-03-14

使用WeakReference

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;
    }
}
章兴发
2023-03-14

我认为你应该使用这种方法

在第一个活动中设置值

public static DataHolder dh = new DataHolder();
DataHolder.setF_TaskId(TaskId);

在其他活动中获得价值

DataHolder dh = FirstActivity.dh;
F_TaskId = dh.getF_TaskId();
 类似资料:
  • 背景: 有两项活动 1x(主活动),1x(子活动-具有列表视图的活动) 主活动扩展了碎片活动,信息将在碎片中使用 单击主活动的菜单项时,子活动将打开 为ListView使用HashMap 我的目标: 单击项的HashMap值应发送回主活动,子活动(带有ListView)应关闭 问题: 我认为我犯了一个巨大的错误,但我无法解决它。 从onOptionsItemSelected和onActivityR

  • 我试图将一个活动(LensActivity)中的ArrayList中的值传递给我的主活动上的TextView。在这个网站上,我找到了Intent方法并进行了实验,但似乎无法传递它,信息被提取到字符串lensString中,并传递到Intent,但在主活动中似乎没有传递或获取TextView,在一些实验中,由于getIntent在主活动中,我得到了一个空指针。 这是LensActivity的代码,它

  • 我成功地尝试在三个活动之间传递数据。那就是: (数据3)活动1(数据1)- 现在的问题是: 我希望使用条件在这些活动之间传递数据。这是在Activity2中,在将数据发送到Activity3之前,我想检查一下 这是名为PickCard的Activity1的代码。Java语言 下面是Activity2 BuildWord的代码。Java语言 这是名为DropCard的Activity3的代码。Jav

  • 我正在尝试在活动之间传递数据 我使用intents在常规活动之间传递数据 请考虑以下代码:: 假设我将来自名为的其他活动的数据作为意图发送到 现在,如何接收中的数据,这些数据是从获得的,然后再将其传递到中 象形表示为:: {EDIT}--如果根据答案可以这样做--不明确,因为AndroidTabRestaurantDescearchListView是一个选项卡活动

  • 我有两项活动。两者都已实现surfaceview。在第一个活动中,我有一个名为score1的变量,我想将score1中的值传递给第二个活动。 每次我运行应用程序时,它在完成第一个活动后崩溃,并尝试加载第二个活动。在我编写代码以获取第二个活动中的额外意图之前,一切都很好。 我的第一个活动有这样的意图: 在我的第二个活动中,以下代码试图获取score1变量的值: 我不明白为什么每次activity o

  • 问题内容: 我有两个单独的android应用程序,即AppA和AppB。我试图让AppA启动AppB(这是一个游戏应用程序)。用户玩完游戏(AppB)后,它将把游戏记录发送回AppA。 因此,AppA可以正确启动AppB,但是当用户玩完游戏(AppB)后,AppB在将数据发送回AppA时崩溃,并且出现了以下错误: 流程:com.joy.AppB,PID:20265 android.content.