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

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

楚冷勋
2023-03-14

我本来解释得很糟糕。这是我的问题:我发送给startActivity()方法的意图包含一个私有字段mMap,它是一个包含我发送给putExtra()的字符串的映射。当目标活动启动时,对getIntent()的调用将返回不包含这些值的意图。mMap字段为空。显然,视图层次结构的内部或启动新活动的操作html" target="_blank">系统部分中的某些东西产生了传递给它的新意图,因为对象ID不同。

但为什么呢?为什么putData()值没有被带到新的目的中?

启动新活动的活动扩展了活动。以下是启动代码:

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. mExthus. mMap中。

以下是startee的代码:

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

当执行到这个方法时,minent。梅克斯特拉斯。mMap为null,minent为空。梅克斯特拉斯。mParcelledData现在包含一些看起来不合理的值(调用startActivity()时为null)。getIntent()返回minent。

我还尝试了startActivityForResult(),得到了同样的结果。

从我在网上看到的文件和样本

共有2个答案

宁卓
2023-03-14

更新以下两行

最终意图i=getIntent();最终捆绑额外服务=i.getExtras();

换成

Bundle extras = getIntent().getExtras();
if(extras!= null){
String var1= extras.getString("Name1");
String var2= extras.getString("Name2");
}
平嘉熙
2023-03-14

在你的主要活动中:

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)
 类似资料:
  • 我有一个主活动MainActivity,它是我的android应用程序的入口点。它通过发射器正确发射。然而,当我尝试执行startActivity时,我看到活动试图启动的一些调试,一些代码正确启动,但MainActivity从未启动。 我认为这可能与意图有关: 对吗? 从内部活动来看,我有 我甚至看到 10-11 22:23:46.026:INFO/ActivityManager(472):从pi

  • 问题内容: 我的应用程序中包含许多产品的网格。当用户选择网格中的一个项目时,我将启动一个新的“对话框”框,并显示该项目的名称,数量和图像。但是我不能动态发送图像源。 这是我的代码 我应该使用什么来从ImageView获取图像源? 问题答案: 像这样使用Bundle

  • //Holder.TimeDate.SetText(Integer.ToString(CurrItem.GetUniqueID())); 这是我的第一个代码,我通过它发送意图,我如何在第二个适配器上接收它 我如何在这里接收文本,因为通过这里我需要发送文本到第三个活动

  • 我有一个应用程序具有这种转换: 输入后,我必须检查一个标志。然后我必须将其作为意图(让我们说)传递给。在中做了一些事情后,它会在按下按钮后返回。我所做的只是再次传递值为true的,然后再次启动活动C。所以发生的是它创建了另一个活动C。 我想做的是,我不必启动一个新的活动C,只需调用super即可使用以前的C。onBackPressed()。但我无法传递intentX的新值。有没有其他方法来实现我想

  • 我正在开发我的第一个Android应用程序。这是一个录音应用程序。我正在用MediaRecord录制语音,如下所示: 我有另一个活动回放这些录制的声音(文件)。在这个活动中,有一个包含我录制的声音的ListView。我想用手机上安装的任何音乐播放器播放声音。这里我的代码:(此代码的来源:https://stackoverflow.com/a/3367231/556169) 但我得到了“音乐播放器不