从XML填充的Android ListView不会将数据发送到新活动

时间:2013-08-21 20:48:52

标签: android xml arrays android-intent

我的strings.xml文件中有一个如下所示的数组。

<string-array name="array123">
<item>test1</item>
<item>test2</item>
<item>test3</item>
<item>test4</item>
<item>test5</item>
</string-array>

我的列表视图在活动1上正确显示,这是我的onItemClick代码

public void onItemClick(AdapterView<?> adapter, View view, int position, long id) {
Intent activityIntent = new Intent(this, Activity2.class);
String selectedItem = adapter.getSelectedItem().toString();
activityIntent.putExtra("my.package.dataToPass", selectedItem);
startActivity(activityIntent);

一旦我点击列表中的项目,屏幕就会变黑并且应用程序崩溃。这是我的活动2的代码

Bundle recdData = getIntent().getExtras();
String myVal = recdData.getString("my.package.dataToPass");
TextView word = (TextView) findViewById(R.id.word);
word.setText(myVal);

我不确定为什么这不起作用。我只是想传递被选中的字符串,以便在第二个活动中显示为文本。我一直在寻找一天半。 我确实试过了

activityIntent.putExtra("my.package.dataToPass", id);

但这似乎只是通过一个空屏幕。 任何帮助将非常感激。显然我没有在意图中传递正确的数据。

1 个答案:

答案 0 :(得分:0)

正如我所看到的,您正在实现Click侦听器(onItemClick)而不是Select侦听器(onItemSelected)。默认情况下,当您单击ListView项时,它不会将其状态更改为“已选择”

使用adapter.getItem(position)代替adapter.getSelectedItem()

public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    String selectedItem  = adapter.getItem(position).toString();
}