StartActivityForRequest的传递机制,从下一个活动向上一个活动传递数据

关于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);}
    }

猜你喜欢

转载自blog.csdn.net/weixin_41847111/article/details/83960088
今日推荐