将信息传递给新活动

时间:2014-11-28 02:15:48

标签: android eclipse string android-intent

我有多个按钮,当点击每个按钮时,它们都会启动相同的活动。根据单击的按钮,第二个活动将加载不同的字符串数组,如何通过意图传递和捕获字符串数组?请注意,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);

}

3 个答案:

答案 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);