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

将java.util.Map传递到另一个活动

龙霖
2023-03-14

我正在使用jsoup解析网站。
我在mainactivity中有一个映射 cookies
并且我需要将值cookies传递给secondactivity
所以我创建了一个类实现pracelable

DataPasser dataPass = new DataPasser(id, pw, cookies);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("data", dataPass);
MainActivity.this.startActivity(intent);
dataPasser dataPass = getIntent().getParcelableExtra("data");
String id = dataPass.getId();
String pw = dataPass.getPw();
Map<String, String> cookies = dataPass.getCookies();
java prettyprint-override">public class DataPasser implements Parcelable {

    private String id;
    private String pw;
    Map<String, String> cookies;

    public String getId() {
        return id;
    }

    public String getPw() {
        return pw;
    }

    public Map<String, String> getCookies() {
        return cookies;
    }

    public DataPasser(Parcel in) {
        this.id = in.readString();
        this.pw = in.readString();
        in.readMap(cookies, Map.class.getClassLoader()); /** NullPointerException here. **/
    }

    public DataPasser(String id, String pw, Map<String, String> cookies) {
        this.id = id;
        this.pw = pw;
        this.cookies = cookies;
    }


    @Override
    public void writeToParcel(Parcel out, int flags) {
        out.writeString(id);
        out.writeString(pw);
        out.writeMap(cookies);        
    }

    public int describeContents() {
        return 0;
    }

    public static final Parcelable.Creator<DataPasser> CREATOR = new Parcelable.Creator<DataPasser>() {
        public DataPasser createFromParcel(Parcel in) {
            return new DataPasser(in);
        }
        public DataPasser[] newArray (int size) {
            return new DataPasser[size];
        }
    };    
}

但是,我在DataPasser类中得到了一个NullPointerException
如何将map 传递给另一个活动?

共有1个答案

秦权
2023-03-14

另一种可能的解决方案是在DataPasser中实现Serializable接口

public class DataPasser implements Serializable {

像您一样从mainactivity.java中传递数据

DataPasser dataPass = new DataPasser(id, pw, cookies);
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
intent.putExtra("data", dataPass);
MainActivity.this.startActivity(intent);

并在secondactivity.java中获得相同的内容,如下所示

DataPasser dataPass = (DataPasser) getIntent().getExtras().get("data");

希望能成功。

对于parcelable也请参考此内容

 类似资料:
  • 我想把意图转移到Xamarin.Android中的另一个活动。基本上,我需要Intent.data和Intent.clipdata到另一个活动,所以我使用下面的代码来传输Intent,但我不知道检索它的正确方法。 下面是Main Activity中的代码 在第二活动中 如何在第二个活动中检索意图?

  • 我尝试使用 如有任何帮助,不胜感激,谢谢。

  • Activity-2(将所选图像设置为屏幕背景图像的活动)

  • 在活动1中,我将一张图片从url加载到imageview中(使用glide)。当我切换到活动2时,我断开了网络连接,我需要在另一个imageview中加载相同的图像。我该如何实现这一点?使用glide缓存在某处的图像可以做到这一点吗?

  • 在SO上也有类似的问题,但没有一个对我有效。 我想在Activity1中获取被点击的图像并在Activity2中显示它。 我获取被点击图像的图像id如下所示: 并通过意图传递给另一个活动。 任何帮助都很感激。

  • 我有一个android studio任务,要求我们创建3个活动,其中一个活动有一个微调器和文本,我们必须将文本和选定的微调器值从活动传递到另一个活动,以显示输入。我知道如何传递文本,但我不太清楚如何对微调器执行同样的操作。这是微调器代码。