我必须将一个字符串从一个活动传递给另一个。
在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的初学者,也许我不明白其意图。
答案 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");