android:意图传递null

时间:2015-05-05 14:29:53

标签: android string android-intent null

我必须将一个字符串从一个活动传递给另一个。

在Activiy1中我做了:

String modello=nomiImmagini[position];
Intent nomeModello = new Intent(getApplicationContext(), Activity2.class);
nomeModello.putExtra("modello", modello);

其中数组nomiImmagini [position]的值不为null,如果我像Toast一样吐司

Toast.makeText(getApplicationContext(),
                "Selezionato " + nomiImmagini[position], Toast.LENGTH_SHORT).show();

它正常工作。

在活动2中我做了:

String modello = getIntent().getStringExtra("modello");

但是结果是null!

我该如何解决这个问题?我是Android的初学者,也许我不明白其意图。

3 个答案:

答案 0 :(得分:0)

启动Activity2时需要传递意图:

Activity1.this.startActivity(nomeModello);

然后在你的Acitivty2的onCreate:

String modello = getIntent().getExtras().getString("modello");

答案 1 :(得分:0)

您可能拥有活动2的LaunchMode:manifest中的singleInstance:

<activity
        ...
    android:launchMode="singleInstance"
        ...
>

如果存在而不是创建新实例,则会导致调用当前实例。 所以我建议将这个标志添加到你的意图中:

nomeModello.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

所以你的代码是:

String modello=nomiImmagini[position];
Intent nomeModello = new Intent(getApplicationContext(), Activity2.class);
nomeModello.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
nomeModello.putExtra("modello", modello);

正如BlackBelt所提到的,你应该通过这个意图 nomeModell 调用activity2,所以它会是这样的: startActivity(nomeModello);

答案 2 :(得分:0)

在第一项活动中你需要这个:

startActivity(nomeModello);

并且在第二个你获取数据的地方,如果这不起作用,试试这个:

    Bundle extras = getIntent().getExtras();

    if (extras != null)
        String modello = extras.getString("modello");