【问题标题】:Android: Passing data between activities - multiple intent.putExtra not working?Android:在活动之间传递数据 - 多个 intent.putExtra 不起作用?
【发布时间】:2011-09-08 02:57:53
【问题描述】:

在活动之间传递数据有一个非常烦人的问题。

这是我用来成功地将进度条的值传递给不同活动的代码:

public void WhenClicked(View view)
{       
    view.clearAnimation();
    Intent intent = new Intent("com.android.Test.QUESTION");        

    if (progressBar != null) 
    {
        if (progressBar.getProgress() != 0) 
        {
            intent.putExtra("ProgressBarValue", progressBar.getProgress());
        }
    }

    startActivity(intent);
}

好的,这样就成功了。现在,当我将其更改为此时,它会爆炸:

public void WhenClicked(View view, String category)
{       
    view.clearAnimation();
    Intent intent = new Intent("com.android.Test.QUESTION");        
    intent.putExtra("Category", category);

    if (progressBar != null) 
    {
        if (progressBar.getProgress() != 0) 
        {
            intent.putExtra("ProgressBarValue", progressBar.getProgress());
        }
    }

    startActivity(intent);
}

我不明白问题出在哪里。我什至尝试将它全部粘贴到一个捆绑包中并将捆绑包添加为额外的 - 这也让它崩溃了。也许我太愚蠢了,我只是盯着我的代码太久了,但任何帮助都会很棒!

这是我第一次使用 Android,这让我很生气!

提前谢谢各位!

【问题讨论】:

  • 你能从你得到的异常中添加堆栈跟踪吗?
  • 它以什么方式“炸毁”?你有一些 logcat 输出吗?
  • 我真的是 Eclipse 和 Android 的新手 - 我真的不知道如何做这些事情.. 很抱歉 :( 如果这很简单,你也许可以告诉我怎么做,我'会抓住它吗?我说的炸毁是指,当我通过模拟器运行它时,只要我按下“开始”按钮,它就会抛出异常并强制关闭..
  • 开始按钮是指我在 Activity 上的开始按钮,而不是实际的运行按钮。
  • whenClicked() 中的代码看起来很完美,正如您所说,添加类别后它会崩溃,我想说这可能是由您的代码的其他部分引起的,因为您更改了方法签名,发布调用此方法的代码会有所帮助。

标签: java android eclipse android-activity


【解决方案1】:

首先你需要创建bundle object(Bundle bnd=new Bundle();),然后是bnd.putString("param1", "test");
下一个创建意图:

Intent myIntent = new Intent(current classname.this,nextactivity.class);                    
myIntent.putExtras(bnd);
startActivityForResult(myIntent, 0);

在第二个活动中,您需要获取 bundel 值,例如:

 Bundle bundle = this.getIntent().getExtras();
 String _getData=bundle.getString("param1");

【讨论】:

    【解决方案2】:

    假设您有一个名为 QUESTION 的活动,您可能会尝试将 .class 放在末尾,并将“this”作为第一个参数:

    Intent intent = new Intent(this, QUESTION.class);
    

    如果您没有 QUESTION 活动,那就是另一个问题。我假设您的活动在同一个应用程序中?

    【讨论】:

    • 是的,我有一个“开始”活动——这段代码来自哪里——还有一个“问题”活动。您按下“开始”活动上的开始按钮,它会打开“问题”活动。
    • 我的建议能解决问题吗?大小写很重要——如果您将活动名称拼写为“Question”,则将上述内容更改为“Question.class”。
    • 不幸的是没有..仍然抛出异常。
    • 对不起,我不是故意这么直截了当地发送的!我只是被卡住了,因为这对我来说真的很新,所以我不完全理解这是在做什么。
    • 很高兴知道异常是发生在此类还是在 Question 类中。你知道如何进入 Debug 视图并设置断点了吗?
    【解决方案3】:

    我相信,应该处理此意图操作com.android.Test.QUESTION 的活动不了解您的类别,即intent.putExtra("Category", category);

    您可以尝试通过两种方式修复它:

    1. 如果接收活动来自您自己的应用程序,则尝试使用显式意图,即Intent intent = new Intent("youCurrentClass","theClassYouWantToCall");,而不提供其他类别,这将启动指定的活动。在显式 Intent 的情况下,Android 系统不会与意图过滤器进行比较以匹配 Intent 对象。
    2. 更改与意图接收活动相关的类别部分。

    希望这会有所帮助,
    sku

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多