gpt4 book ai didi

android - 为什么启动我的 Activity 的 Intent 不包含我在发送到 startActivity() 的 Intent 中放入的额外数据?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:42 25 4
gpt4 key购买 nike

我最初解释得很糟糕。这是我的问题:我发送到 startActivity() 方法的 Intent 包含一个私有(private)字段 mMap,它是一个包含我发送到 putExtra() 的字符串的 Map。当目标 Activity 开始时,调用 getIntent() 会返回一个包含这些值的 Intent。 mMap 字段为null。显然, View 层次结构的内部或启动新 Activity 的操作系统部分创建了一个新的 Intent 传递给它,因为对象 ID 不同。

但是为什么?为什么 putData() 值没有传递给新的 Intent?

启动新 Activity 的 Activity 扩展 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);
}
}

我已经尝试过使用和不使用(推荐的)完整包名称前缀的键值。

在 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 >
}

当执行到这个方法时,mIntent.mExtras.mMap 是null,并且 mIntent.mExtras.mParcelledData 现在包含一些看起来不合理的值(它是null strong> 当调用 startActivity() 时)。 getIntent() 返回 mIntent。

我也尝试过 startActivityForResult(),结果相同。

根据我在网上看到的文档和示例以及示例应用程序,这应该很容易。我找到了另一种方法来满足我的迫切需要,但我想知道是否有人可以帮助我理解为什么这么简单的方法不起作用。

最佳答案

在您的主要 Activity 中:

i = new Intent(this, StatList.class);
i.putExtra("Name1", "Test1");
i.putExtra("Name3", "Test2");
startActivity(i);

然后在StatList.class

Bundle extras = getIntent().getExtras();
String name1 = extras.getString("Name1");
String name3 = extras.getString("Name3");
Log.i("StatList", "Name1 = " + name1 + " && Name3 = " + name3)

关于android - 为什么启动我的 Activity 的 Intent 不包含我在发送到 startActivity() 的 Intent 中放入的额外数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13485208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com