Android: передача данных между действиями - не работает несколько intent.putExtra? - PullRequest
0 голосов
/ 08 сентября 2011

Возникла очень неприятная проблема с передачей данных между действиями.

Этот код я использую для успешной передачи значения индикатора выполнения в другое действие:

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 ]

3 голосов
/ 08 сентября 2011

сначала нужно создать 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");
0 голосов
/ 08 сентября 2011

Я полагаю, что действие, которое должно обработать это намеренное действие com.android.Test.QUESTION, не понимает вашу категорию, т.е. intent.putExtra("Category", category);.

Вы можете попробовать исправить это двумя способами:

  1. Если принимающее действие происходит из вашего собственного приложения, попробуйте использовать явное намерение, т.е. Intent intent = new Intent("youCurrentClass","theClassYouWantToCall"); без указания дополнительной категории, при этом запустится указанное действие. В случае явного намерения система Android не выполняет сравнение с фильтрами намерений для соответствия объекту намерения.
  2. Изменить раздел категории по отношению к намерению получения Активности.

Надеюсь, это поможет,
* Код 1015 *

0 голосов
/ 08 сентября 2011

Предполагая, что у вас есть действие с именем QUESTION, вы можете попытаться поставить .class в конце, а также "this" для первого параметра:

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

, если у вас нет действия QUESTIONтогда это еще одна проблема.Я предполагаю, что ваши действия находятся в одном приложении?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...