Android 向新活动传递信息
我有多个按钮,当点击每个按钮时,它们都会启动相同的活动。根据单击的按钮,第二个活动将加载不同的字符串数组,如何通过intent传递和捕获字符串数组?注意字符串数组保存在.xml文件中 此时,第二个活动正在加载一个特定的数组Android 向新活动传递信息,android,eclipse,string,android-intent,Android,Eclipse,String,Android Intent,我有多个按钮,当点击每个按钮时,它们都会启动相同的活动。根据单击的按钮,第二个活动将加载不同的字符串数组,如何通过intent传递和捕获字符串数组?注意字符串数组保存在.xml文件中 此时,第二个活动正在加载一个特定的数组 res = getResources(); arraytoload = res.getStringArray(R.array.ninetyseven); 如何让按钮发送包含例如(R.array.twenty5)的消息,然后将该负载作为arraytoload
res = getResources();
arraytoload = res.getStringArray(R.array.ninetyseven);
如何让按钮发送包含例如(R.array.twenty5)的消息,然后将该负载作为arraytoload
第一项活动
one.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent("com.example.test.MainActivity");
intent.putExtra("id", "ninetyseven");
startActivity(intent);
}
});
第二项活动
private String[] arraytoload;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String idString = getIntent().getExtras().getString("id");
int id = getResources().getIdentifier(idString, "array", getPackageName());
arraytoload = res.getStringArray(id);
}
在主要活动中,在按钮的
onClick()
方法中
String s = "hello!";
Intent intent = new Intent(this, NewClass.class);
intent.putExtra("extraInfo1",s);
startActivity(intent);
在NewClass.class中的onCreate()
方法中
Intent intent = getIntent();
String passedString = intent.getStringExtra("extraInfo1","doesn't exist!");
System.out.println(passedString);
这将打印“你好!”
getStringExtra()
中的第二个参数是默认值,如果没有找到字符串以及给定标记的意图(在本例中,“extraInfo1”是标记)<如果您在其他地方启动了intent,并且没有将字符串附加到标记,则code>passedString将设置为“不存在!” 根据单击的按钮,发送数组name
,目的如下:
按钮1:
i.putExtra("id", "ninetyseven");
按钮2:
i.putExtra("id", "ninetyeight");
然后在第二个活动中检索它:
String idString = getIntent().getExtras().getString("id");
然后,为了获得阵列,可以使用以下代码:
String idString = getIntent().getExtras().getString("id");
int id = getResources().getIdentifier(idString, "array", getPackageName());
arraytoload = res.getStringArray(id);
这行代码:
getIdentifier(idString, "array", getPackageName());
将生成以下内容:R.array.ninetyseven
希望这能帮助您解决问题。您只需将阵列资源id解析为一个额外的目的
Intent intent = new Intent(this, SecondActivity.class)
intent.putExtra("arrayResourceId", R.array.ninetyseven);
startActivity(intent);
在第二个活动中,onCreate方法
int arrayResourceId = getIntent().getIntExtra("arrayResourceId", -1);
arraytoload = res.getStringArray(arrayResourceId);
这有点帮助,但是我在arraytoload=res.getStringArray(id);,处得到一个空指针;,不知道为什么。哦,对不起。。请将“id”更改为“array”,检查
getIdentifier(idString,“id”,getPackageName())中的编辑部分
togetIdentifier(idString,“array”,getPackageName())代码>这是一个与某人一起工作的。。你能Log.d(“id”和“+id”)代码>在分配arraytoload
之前,我们检查生成的id