关于startActivityforRequest的使用
想要实现的效果
在一个主界面中点击进入下一个活动,当回到主界面中时,将该活动获得的数据信息传递到主活动中,类似于用户发布消息,发布成功后进入消息页面
//在主界面的activity定义intent和requestcode,requestcode是指一个具体的数值,可以是任意数值,用于参照与另一个活动中的resultcode是否匹配,匹配则传递数据值
//对底部导航栏的item进行监听,当点击发布进入发布页面,采用startActivityForResult启动活动
case R.id.three:
toolbar.setTitle(item.getTitle().toString());
Intent mIntent =new Intent(zhuActivity.this,build.class);
int requestCode = 0;
startActivityForResult(mIntent, requestCode);
break;
//在需要触发点击事件的代码段中实现界面的跳转
//在发布界面(build.java)中将获得的输入数据利用intent进行传递,这里利用了bimb云后端,将模拟用户发布的数据存储到云后端中
build_data.save(new SaveListener<String>() {
@Override
public void done(String s, BmobException e) {
if(e==null){
Toast.makeText(build.this,"发布消息成功:" + s,Toast.LENGTH_LONG).show();
Intent mIntent = new Intent();
mIntent.putExtra("message", editText.getText().toString());
// 设置结果,并进行传送
setResult(resultCode, mIntent);
finish();
}else{
Log.i("bmob","失败:"+e.getMessage()+","+e.getErrorCode());
}
}
});
在zhu.activity.java主界面中还需要调用onActivityResult()方法来获得传递的数据
//判断requestCode与resultcode是否相等,相等则将主界面的textview的text设置为我们在edittext输入的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String message =data.getStringExtra("message");
if (requestCode==resultCode){
textView.setText(message);}
}