Android 如何在不使用finish()函数的情况下通过intent发送数据?

Android 如何在不使用finish()函数的情况下通过intent发送数据?,android,android-intent,android-activity,data-transfer,Android,Android Intent,Android Activity,Data Transfer,我正在制作一个android应用程序,它有两个活动。在此应用程序中,活动1将启动活动2并从活动2请求数据。我使用intent在它们之间传输数据。我知道,活动2只在调用finish()函数后发送数据。但在我的应用程序中,我希望活动2始终处于活动状态。那么,有没有办法在不等待finish()函数的情况下使用intent发送数据 更新:这是我的源代码: 在活动1中: 按下按钮时打开活动编号 public static final int REQUEST_CODE_INPUT=10;

我正在制作一个android应用程序,它有两个活动。在此应用程序中,活动1将启动活动2并从活动2请求数据。我使用intent在它们之间传输数据。我知道,活动2只在调用finish()函数后发送数据。但在我的应用程序中,我希望活动2始终处于活动状态。那么,有没有办法在不等待finish()函数的情况下使用intent发送数据

更新:这是我的源代码:

  • 在活动1中:
按下按钮时打开活动编号

    public static final int REQUEST_CODE_INPUT=10;
    public static final int RESULT_CODE_1=20;
    public static final int RESULT_CODE_2=21;
    private String TAG = "FirstActivity";


    btnInputData.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            //Open Activity number 2 With REQUEST_CODE_INPUT
            Intent intent=new Intent(FirstActivity.this, SecondActivity.class);
            //Call startActivityForResul
            startActivityForResult(intent, REQUEST_CODE_INPUT);
        }
    });
    btnSave1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //
            sendToFirstActivity(FirstActivity.RESULT_CODE_1);
        }
    });

    btnSave2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //
            sendToFirstActivity(FirstActivity.RESULT_CODE_2);
        }
    });
处理接收到的数据

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    //Show Log
    Log.d(TAG,"onActivityResult: requestCode = "+ requestCode+ "; resultCode = "+ resultCode);
    //check if requestCode =REQUEST_CODE_INPUT
    //
    if(requestCode==REQUEST_CODE_INPUT)
    {
        //Check ResultCode from Activity 2
        switch(resultCode)
        {
        case RESULT_CODE_1:
            //value from Activity number 2
            int v1= data.getIntExtra("data", 0);
            arrData.add(v1*v1);

            break;
        case RESULT_CODE_2:
            //value from Activity number 2
            int v2= data.getIntExtra("data", 0);
            arrData.add(v2);
            break;
        }
    }
}
*在活动2中

按下按钮时调用函数发送数据

    public static final int REQUEST_CODE_INPUT=10;
    public static final int RESULT_CODE_1=20;
    public static final int RESULT_CODE_2=21;
    private String TAG = "FirstActivity";


    btnInputData.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            //Open Activity number 2 With REQUEST_CODE_INPUT
            Intent intent=new Intent(FirstActivity.this, SecondActivity.class);
            //Call startActivityForResul
            startActivityForResult(intent, REQUEST_CODE_INPUT);
        }
    });
    btnSave1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            //
            sendToFirstActivity(FirstActivity.RESULT_CODE_1);
        }
    });

    btnSave2.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            //
            sendToFirstActivity(FirstActivity.RESULT_CODE_2);
        }
    });
函数将数据返回到活动编号1

public void sendToFirstActivity(int resultcode)
{
    Intent intent=getIntent();
    int value= Integer.parseInt(editNumber.getText()+"");
    intent.putExtra("data", value);
    setResult(resultcode, intent);
    finish();
}

在此代码中,按下按钮后,活动2将关闭,并向活动1发送数据。当我尝试删除finish()函数时,活动2将不会关闭,但不会向活动1发送数据。

对于onActivityResult()函数的
onActivityResult()
函数,只有在调用finish()函数时才会触发它。我认为
startActivityForResult()
不是适合您的正确方法。

将代码放在此处。请将代码张贴到stackFinish()以关闭当前活动。它与活动之间的数据传输无关。使用putExtra()方法传输数据。触发startActivty()时,它会将数据发送到其他活动。完成与否无关。它只是在触发下一个活动后关闭该活动。活动2仅在调用finish()函数后发送数据??我不这么认为。您是否正在尝试在ActivityResult上实现