繁体   English   中英

活动之间的两种数据绑定方式

[英]TWO ways data binding between activities

我有2个活动,并且需要main Activity将一些数据发送到second Activity然后第二个活动分析此数据并发送回响应,因此我具有以下2个代码:

Main Activity

    import static tk.zillion.mobile.SecondActivity.EXTRA_STUFF;

  public class MainActivity extends Activity {
    private static int PICK_CONTACT_REQUEST = 0;
   private static final int SECOND_ACTIVITY_RESULT_CODE = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   // Start the SecondActivity
    Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    intent.putExtra(Intent.EXTRA_TEXT, "my text");
    startActivityForResult(intent, SECOND_ACTIVITY_RESULT_CODE);

    finish();
  }

// This method is called when the second activity finishes
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Toast.makeText(this, "I'm the Main activity", Toast.LENGTH_SHORT).show();
    // check that it is the SecondActivity with an OK result
    if (requestCode == SECOND_ACTIVITY_RESULT_CODE) {
        if (resultCode == RESULT_OK) {

            // get String data from Intent
            String returnString = data.getStringExtra(EXTRA_STUFF);

            // set text view with string
            Toast.makeText(this, "I'm the Main activity", Toast.LENGTH_SHORT).show();
        }
    }
}

Second Activity如下:

public class SecondActivity extends Activity {

static final String EXTRA_STUFF = "tk.zillion.mobile.EXTRA_STUFF";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Intent intent = new Intent();
    String s = getIntent().getStringExtra(Intent.EXTRA_TEXT);
    Toast.makeText(this, "I'm the second activity " + s , Toast.LENGTH_SHORT).show();

    Bundle basket =new Bundle();
    basket.putString(EXTRA_STUFF, s);
    intent.putExtras(basket);
    setResult(RESULT_OK, intent);
    finish();
  }
}

第二个活动已正确触发,并从主要活动接收了数据,但是一旦将数据发送回,则不会触发onActivityResult

我该如何解决? 谢谢

不要在startActivityForResult之后调用finish(),否则启动第二个实例的MainActivity实例将被销毁

删除startActivityForResult()之后的finish()调用。 您可以防止即将来临的活动返回结果,因为您从back任务中使用finish()删除了MainActivity。

暂无
暂无

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

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