机器人如何通过LinkedHashMap的活动之间? [英] Android How to Pass LinkedHashMap Between Activities?

查看:131
本文介绍了机器人如何通过LinkedHashMap的活动之间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想传递的LinkedHashMap活动之间,我的code是这样

I am trying to pass LinkedHashMap between activities, my code is like this

活动A

LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
// setting data in map
Bundle bundle = new Bundle();
bundle.putSerializable("OBJECTS_LINKED_HASHMAP", mLinkedHashMap);  
Intent intent = new Intent(this, ActivityB.class); 
intent.putExtras(bundle);
startActivity(intent);

在活动当我收到包对象我收到类转换异常错误信息

in Activity when I receive bundle object I am getting "Class cast exception" error message

b活动

Bundle bundle = this.getIntent().getExtras();
LinkedHashMap mLinkedHashMap = new LinkedHashMap<String, Object>();
mLinkedHashMap = (LinkedHashMap<String, Object>) bundle.getSerializable("OBJECTS_LINKED_HASHMAP");

入门级的转换异常

Getting class cast exceptions

ClassCastException: java.util.HashMap cannot be cast to LinkedHashMap

我已签文件的LinkedHashMap也实现Serializable接口。

I have checked documentation LinkedHashMap also implementing Serializable interface.

我使用LinkedHashMap的,因为我要保持目标秩序,他们的方式,他们插入,我想回去秩序。

I am using LinkedHashMap because I want to maintain object order, they way they inserted I want back in order.

如何活动之间传递的LinkedHashMap?

How to pass LinkedHashMap between activities ?

推荐答案

尝试 GSON 变革:)

Try GSON for change :)

下载此<一个gson.jar href="http://$c$c.google.com/p/google-gson/downloads/detail?name=google-gson-2.2.2-release.zip&can=2&q=">link

而在你的项目中添加GSON-2.2.2.jar文件。
现在通过你的LinkedHashMap使用GSON

And add gson-2.2.2.jar file in your project.
Now pass your LinkedHashMap to another activity using GSON

这样的(修改了这个低于code根据您的需要):

like this(modified this below code as per your need):

MainActivity :::

public class MainActivity extends Activity {
    ObjectClass obj=new ObjectClass();
    LinkedHashMap<String, ObjectClass> mLinkedHashMap = new LinkedHashMap<String, ObjectClass>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        obj.id=1;
        obj.name="hello";

        mLinkedHashMap.put("test", obj);

        Gson gson = new Gson();
        String list = gson.toJson(mLinkedHashMap); 
        Intent intent = new Intent(this, secondActivity.class); 
        intent.putExtra("list", list);
        startActivity(intent);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

secondActivity :::

public class secondActivity extends Activity {
    LinkedHashMap<String, ObjectClass> mLinkedHashMap = new LinkedHashMap<String, ObjectClass>();
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     String str=  getIntent().getStringExtra("list");
     Gson gson = new Gson();

     Type entityType = new TypeToken< LinkedHashMap<String, ObjectClass>>(){}.getType();
     mLinkedHashMap = gson.fromJson(str, entityType);
    ObjectClass obj = mLinkedHashMap.get("test");

     Log.i("list", ""+obj.id);
    }
}

为我工作。希望这会有所帮助。

Worked for me. Hope this will help.

和下面是引用我的对象类。

And Here is my object class for reference.

public class ObjectClass {

    public int id;
    public String name;

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }


}

如何添加GSON-2.2.2.jar文件。

1)复制你的GSON-2.2.2.jar从下载的文件夹谷歌GSON-2.2.2。
2)粘贴到项目的资源文件夹。 3)现在去通过右键点击该项目的项目构建路径>构建路径>配置构建路径..
4)将开立一个对话框选择Java Build Path从右键菜单中,去图书馆的标签,然后
点击添加罐...按钮,你可以看到下面的图片
这将打开另一个对话框来添加罐子。在此选择GSON-2.2.2.jar,我们添加了项目的资源文件夹(步骤2)。
这将增加罐子到您的项目(我已经把它添加在我的项目,你可以看到如下图)

5)现在选择排序和导出标签,然后选择您的GSON-2.2.2.jar(见下图)。
6)preSS OK,现在你可以在你的项目中使用 GSON

1) copy your gson-2.2.2.jar from downloaded folder "google-gson-2.2.2" .
2) paste it to your project's asset folder.
3) now go to your project buildpath by right clicking on the your project>Build Path>Configure Build Path..
4) It will open one dialog select java build path from right menu and go to library tag then
Click on "Add Jars..." button as you can see in below image
it will open another dialog to add jar. here select the gson-2.2.2.jar that we added in project's asset folder(step 2).
It will add jar to your project(I already added it in my project as you can see in below image)

5)Now select Order and Export tag and select your gson-2.2.2.jar(see below image).
6)Press OK and now you can use GSON in your project

这篇关于机器人如何通过LinkedHashMap的活动之间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆