Source Code:
(1)MainActivity.class
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button start = (Button)findViewById(R.id.start);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, OtherActivity.class);
Bundle bundle = new Bundle();
bundle.putString("attribute", "属性");
bundle.putInt("age", 10);
intent.putExtras(bundle);
MainActivity.this.startActivityForResult(intent, 100);// 通过该方法打开,当中的第二个参数为请求码
}
});
}
/**
* requestCode 对应startActivityForResult中的第二个参数
* resultCode <span>整数结果代码返回的子Activity在setresult()。</span>
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
String result = data.getStringExtra("result");
Toast.makeText(this, result, 1).show();
}
(2)OtherActivity.class
public class OtherActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.setContentView(R.layout.activity_other);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String str = bundle.getString("attribute");
System.out.println(str);
}
public void CallBackActivity(View v) {
Intent data = new Intent();
data.putExtra("result", "接收到了测试数据 ");
setResult(30, data); // 设置返回数据,
finish(); // 关闭当前Activity
}
}
问题:如果setResult 方法不起作用,没有回调 onActivityForResult() 方法需药注意以下两点:
1、 setResult(30, data); // 设置返回数据,中的 resultCode是否大于0;
2、 this.startActivityForResult(intent, 200);// 通过该方法打开,当中的第二个参数为请求码
sourceCode:requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
如果> = 0 requestCode,此代码将返回onactivityresult()活动时退出。
3、如果在otherActivity清单文件中声明了android:launchMode="singleInstance",这样的话,MainActivity,otherActivity将不会在同一个栈中,导致setResult(RESULT_OK);失败。
Activity之间的回调
最新推荐文章于 2018-08-16 14:26:53 发布