Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 意图中的树映射成为HashMap_Java_Android_Android Intent - Fatal编程技术网

Java 意图中的树映射成为HashMap

Java 意图中的树映射成为HashMap,java,android,android-intent,Java,Android,Android Intent,我想将一个TreeMap通过一个意图从一个活动传递到另一个活动。但不知何故,Android在途中将其转换成了一个HashMap 在新创建的具有两个空白活动的项目中,在emulator中运行MainActivity会生成java.lang.ClassCastException:java.util.HashMap不能转换为java.util.TreeMap 第一项活动: import android.content.Intent; import android.support.v7.app.Acti

我想将一个
TreeMap
通过一个意图从一个活动传递到另一个活动。但不知何故,Android在途中将其转换成了一个
HashMap

在新创建的具有两个空白活动的项目中,在emulator中运行
MainActivity
会生成
java.lang.ClassCastException:java.util.HashMap不能转换为java.util.TreeMap

第一项活动:

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent i = new Intent(this, SecondActivity.class);
        i.putExtra("map", new TreeMap<Long, Long>());
        //TreeMap<Long, Long> m = (TreeMap<Long, Long>) i.getSerializableExtra("map");
        startActivity(i);
    }

}
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;


public class SecondActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TreeMap<Long, Long> m = (TreeMap<Long, Long>) getIntent().getSerializableExtra("map");
    }

}
导入android.content.Intent;
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入java.util.TreeMap;
公共类MainActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
意向i=新意向(此,SecondActivity.class);
i、 putExtra(“map”,newtreemap());
//TreeMap m=(TreeMap)i.getSerializableExtra(“map”);
星触觉(i);
}
}
第二项活动:

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Intent i = new Intent(this, SecondActivity.class);
        i.putExtra("map", new TreeMap<Long, Long>());
        //TreeMap<Long, Long> m = (TreeMap<Long, Long>) i.getSerializableExtra("map");
        startActivity(i);
    }

}
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import java.util.TreeMap;


public class SecondActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        TreeMap<Long, Long> m = (TreeMap<Long, Long>) getIntent().getSerializableExtra("map");
    }

}
导入android.support.v7.app.ActionBarActivity;
导入android.os.Bundle;
导入java.util.TreeMap;
公共类SecondActivity扩展了ActionBarActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_秒);
TreeMap m=(TreeMap)getIntent().getSerializableExtra(“映射”);
}
}

奇怪的是,第一个活动中的注释代码运行时没有任何问题。

正如pbabcdefp在上面的注释中所提到的,问题的原因已经描述。有关更详细的说明,请参见


这是一个易于实施的解决方案。

这似乎回答了您的问题。是的,非常感谢!