Получение намерения и его дополнений, но не намерения действия, которое начало новое действие - PullRequest
3 голосов
/ 07 августа 2011

Когда вы собираетесь начать новое действие и хотите передать переменную, вы обычно просто делаете это:

Intent intent = new Intent().setClass(this, NewActivity.class);
intent.putExtra("variable", variable);
startActivity(intent);

И когда вы читаете дополнительное (в новом действии), высделать это:

Intent intent = getIntent();
if(intent != null)
{
    variable = intent.getIntArrayExtra("variable");
}

Теперь в моем приложении у меня есть экран загрузки, где происходит вся загрузка.Это происходит в основной деятельности.В ходе этого процесса многие переменные обновляются / изменяются.У меня есть много других действий, и мне нужно передать эти недавно обновленные переменные некоторым из этих действий.Проблема в том, что эти действия не начаты моей основной деятельностью.

Есть ли способ, которым я могу сделать это в своей основной деятельности:

Intent newIntent1 = new Intent().setClass(MainActivity.this, NewActivity1.class);
newIntent1.putExtra("var1", var1);

и затем запускать действие, используя startActivity(newIntent1); из другого занятия?

Я пытался прочитать дополнительное, как это:

Intent intent;
try
{
    intent = Intent.parseUri("content://com.mycompany.android.MainActivity", 0);
    if(intent != null)
    {
        var1 = intent.getIntArrayExtra("var1");
    }
}
catch (URISyntaxException e)
{
    e.printStackTrace();
}

Это не работает, var1переменная равна нулю (инициализируется так).

Если честно, я понятия не имею, как это сделать, или как Intent.parseUri даже работает.Документация для этого действительно плоха для начинающего, как я.

Ответы [ 2 ]

1 голос
/ 07 августа 2011

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

Нет, нет.

Вам необходимо написать реальную модель данных (база данных, поставщик контента, POJO в статическом элементе данных) и сделать так, чтобы все действия относились к этой общей модели данных.

0 голосов
/ 07 августа 2011

Было бы проще просто использовать трансляцию для информирования об изменениях.

...