我最初解释得很糟糕.这是我的问题:我发送给startActivity()方法的Intent包含一个私有字段mMap,它是一个包含我发送给putExtra()的字符串的Map.当目标活动开始时,对getIntent()的调用将返回不包含这些值的Intent .mMap字段为空.显然,View层次结构的内容或启动新活动的OS部分创建了一个新的Intent传递给它,因为对象ID是不同的.
但为什么?为什么putData()值没有携带fowrard到新的Intent?
启动新活动的活动扩展了Activity.这是启动代码:
public boolean onOptionsItemSelected(final MenuItem item) {
switch (item.getItemId()) {
case 4:
i = new Intent(this, StatList.class);
i.putExtra("Name1", "Test1");
i.putExtra("Name3", "Test2");
startActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
我已尝试使用和不使用(推荐)完整包名称前缀的键值.
在Eclipse调试器中,我已经验证了正确插入到i.mExtras.mMap中的播放器名称的值.
这是来自初学者的代码:
public class StatList extends ListActivity {
private final StatsListAdapter statsAdapter;
public StatList() {
statsAdapter = StatsListAdapter.getInstance(this);
} // default ctor
@Override
public void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
final Intent i = getIntent();
final Bundle extras = i.getExtras();
< more code here >
}
Run Code Online (Sandbox Code Playgroud)
当执行到此方法时,mIntent.mExtras.mMap为null …