Android 向新活动传递信息

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

我有多个按钮,当点击每个按钮时,它们都会启动相同的活动。根据单击的按钮,第二个活动将加载不同的字符串数组,如何通过intent传递和捕获字符串数组?注意字符串数组保存在.xml文件中

此时,第二个活动正在加载一个特定的数组

    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())中的编辑部分
to
getIdentifier(idString,“array”,getPackageName())这是一个与某人一起工作的。。你能
Log.d(“id”和“+id”)在分配
arraytoload
之前,我们检查生成的id