Android:在活动之间传递数据 - 多个intent.putExtra不工作?

时间:2011-09-08 02:57:53

标签: java android eclipse android-activity

在活动之间传递数据时遇到非常烦人的问题。

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

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而它正在杀了我!

先谢谢你们!

3 个答案:

答案 0 :(得分:3)

首先,您需要创建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");

答案 1 :(得分:0)

假设您有一个名为QUESTION的活动,您可能会尝试将.class放在最后以及第一个参数的“this”:

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

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

答案 2 :(得分:0)

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

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

  1. 如果接收活动来自您自己的应用程序,那么尝试使用明确的意图,即Intent intent = new Intent("youCurrentClass","theClassYouWantToCall");而不提供其他类别,这将启动指定的活动。在显式Intent的情况下,Android系统不会与intent-filters进行比较,以匹配Intent Object。
  2. 更改与接收活动的意图相关的类别部分。
  3. 希望这有帮助,
    SKU