2017-07-17 59 views
-4

我正在做一个有2个活动的Android应用程序。在这个应用程序中,活动编号1将启动活动编号2并从活动编号2请求数据。我使用意图在它们之间传输数据。据我所知,活动2仅在调用finish()函数后发送数据。但在我的应用程序中,我想保持活动2始终处于活动状态。那么,有什么办法通过使用intent和out waiting finish()函数来发送数据吗?如何通过intent发送数据而不使用finish()函数?

UPDATE:这是我的源代码:

  • 在活动编号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); 
     } 
    }); 

处理接收到的数据

@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; 
     } 
    } 
} 

*在活动数时按钮被按下

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

呼叫函数发送数据编号2将关闭并发送数据到活动编号1.当我尝试删除完成()函数时,活动2将不会关闭,但不会将数据发送到活动编号1.

+0

在这里输入您的代码 –

+0

请将您的代码发布到堆栈 –

+0

完成()需要关闭当前活动。它与活动之间的数据传输无关。使用putExtra()方法传输数据。当startActivty()被触发时,它将数据发送给其他活动。完成无关。它只是在您的下一个活动触发后关闭活动。 –

回答

0

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

+0

不撤销,它的调用,哈哈 – manza

+0

你有什么想法吗? –

+0

不,完成()是需要的 – manza