我有多个按钮,当点击每个按钮时,它们都会启动相同的活动。根据单击的按钮,第二个活动将加载不同的字符串数组,如何通过意图传递和捕获字符串数组?请注意,String Arrays保存在.xml文件中。
目前第二个活动只是加载一个特定的数组
res = getResources();
arraytoload = res.getStringArray(R.array.ninetyseven);
如何让按钮发送包含例如(R.array.twentyfive)的消息,然后将该负载作为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);
}
答案 0 :(得分:0)
在您的主要活动中,使用按钮的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”是标记)。 passedString
将设置为“不存在!”如果你在其他地方启动意图并且不附加带有标记的字符串。
答案 1 :(得分:0)
根据点击的按钮,发送数组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
希望这可以帮助您解决问题。
答案 2 :(得分:0)
您可以简单地将数组资源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);