我有以下代码:
chart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
final String aux= (String) lt.getItemAtPosition(position);
Intent myIntent = new Intent(infoList.this, tabList.class);
startActivity(myIntent);
}
});
我也有ListView
。当我点击ListView
中的某个项目时,我会导航到另一个显示该活动信息的活动。我怎么做?我希望该信息与我点击的项目相对应。
答案 0 :(得分:3)
这是我在这种情况下所做的,如果你不想只传回一个id:
我用这个打电话给另一个活动:
Intent intent = new Intent(myapp, CreateExerciseActivity.class);
intent.putExtra("selected_id", workout.getId());
startActivityForResult(intent, CREATE_ACTIVITY);
然后我做
Intent returnIntent = new Intent();
returnIntent.putExtra("name", m.getName());
returnIntent.putExtra("unit", m.getUnit());
returnIntent.putExtra("quantity", m.getQuantity());
if (getParent() == null) {
setResult(Activity.RESULT_OK, returnIntent);
} else {
getParent().setResult(Activity.RESULT_OK, returnIntent);
}
finish();
所以,在这种情况下,我传入一个id,以便从用户那里获得更多细节,然后我将它们传递回调用活动,以便添加它,因为我不想保存这个直到用户选择以后。
因此,您需要执行startActivityForResult
才能让它返回数据。
答案 1 :(得分:2)
您可以使用putExtra()方法向Intent添加一些数据,然后使用getExtras()。getSomething()检索新Activity中的数据。
答案 2 :(得分:1)
我猜您必须使用OnItemClickListener而不是点击事件,并且您需要打算调用下一个活动。
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
public void onItemClick(AdapterView parent, View v, int position, long id)
{
Intent intent = new Intent(this, MyInfoActivity.class);
intent.putExtra("selected_id", getIdFor(position));
startActivity(intent);
}
};
mHistoryView = (ListView)findViewById(R.id.history);
mHistoryView.setOnItemClickListener(mMessageClickedHandler);
答案 3 :(得分:0)
可能的答案:How do I pass data between Activities in Android application?
http://thedevelopersinfo.wordpress.com/2009/10/15/passing-data-between-activities-in-android/
答案 4 :(得分:0)
这实际上取决于列表视图中的数据。例如,如果您在列表视图中显示联系人列表,则可以将联系人的ID传递给其他活动,并让该活动访问联系人的内容提供商以检索您希望其工作的数据用。您将在intent的数据字段中的URI中传递ID,而不是在extras包中。