使用来自两个不同活动的意图传递值

时间:2015-10-26 06:29:54

标签: android android-intent

我希望将值从两个不同的活动(发票,联系人)传递到相同的活动(AllContacts)。 第一个活动(发票)使用意图并从AllContacts获取数据,即(两者都相同)活动,此处为项目点击,如果价值来自发票,那么它会重新发回发票,其他结果将转到下一个活动。 我做了这件事(前),但它只适用于发票..

    class AllContacts
    invoiceContact=i.getStringExtra("invoiceContact");//from Invoice

    public void onItemClick(AdapterView<?> parent, View v,
            int position, long id)
    {


        super.onItemClick(parent, v, position, id);

        Cursor c = (Cursor) mAdapter.getItem(position);
        String keyId = c.getString(c
                .getColumnIndex(Constants.KEY_ID));


        try{
    if(!invoiceContact.toString().equals("")){
               invoiceContact=null;
            Intent extra = new Intent();

         extra.putExtra(RESULT_PATH, keyId);
            setResult(RESULT_OK, extra);

            finish();

    }

        else if(invoiceContact.toString().equals("")) { //for Contact intent

        Intent launchContactRowDetails = new Intent(this,
                ContactRowDetails.class);
        launchContactRowDetails.putExtra("KeyId", keyId);
        updateLastFinishedActivity(Constants.ContactRowDetails);
        startActivity(launchContactRowDetails);
        }
    }
        catch(Exception e){
        e.printStackTrace();
    }

}

2 个答案:

答案 0 :(得分:0)

在您应该去其他活动的意图中

Intent extra = new Intent();

你必须指定你必须去的活动

Intent launchContactRowDetails = new Intent(this, ContactRowDetails.class);

就像你在较低的if循环中一样。

答案 1 :(得分:0)

您可以通过以下两项活动启动AllContactsAcitivity

startActivityForResult(intent, REQUEST_CODE);

并将结果返回到称为它的任何活动:

Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri");
setResult(Activity.RESULT_OK, result);
finish();

有关详细信息,请参阅此处:Interaction with other apps(不要担心标题,可以在同一个应用程序中使用)