繁体   English   中英

在活动之间传递数据

[英]Passing data between activities

我有以下代码:

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的项目时,我导航到另一个活动,该活动向我显示该活动的信息。 我怎么做? 我希望该信息与我单击的项目相对应。

如果您不想只传回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才能使其能够返回数据。

您可以使用putExtra()方法向Intent添加一些数据,然后使用getExtras()。getSomething()在新的Activity中检索数据。

我猜您必须使用OnItemClickListener而不是click事件,并且您需要意图调用下一个活动。

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

这实际上取决于列表视图中的数据。 例如,如果要在列表视图中显示联系人列表,则可以将联系人的ID传递给其他活动,然后让该活动访问内容提供者以供联系人检索您希望其工作的数据用。 您需要在意图数据字段的URI中传递一个ID,而不是在Extras捆绑包中传递ID。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM