Android使用bundle从另一个活动中检索onActivityResult的结果

Mis*_* Lc 0 android android-intent android-activity

大家好,如果你愿意帮助我。我被困在如何从另一个活动中检索包数据。基本上我有两个活动,当我在第一个活动上按下按钮时,它将继续第二个活动,然后设置稍后要在第一个活动上传递的字符串值。我所做的是使用捆绑包来放置字符串值。我的问题是如何从第二个活动中获取(字符串的)包值并将其返回到第一个活动?这是我的代码:

FirstActivity(继续第二个活动):

button1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivityForResult(new Intent(this,
                        SecondActivity.class), REQUEST_CODE_SAMPLE);
            }
        });
Run Code Online (Sandbox Code Playgroud)

SecondActivity:(返回捆绑包值)

button2.setOnClickListener(new OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Bundle b = new Bundle();
                        bundle.putString("A", "Aloha");
                        bundle.putString("B", "Bubbles");

            setResult(
                    Activity.RESULT_OK,
                    getIntent().putExtras(b));
                    }
                });
}
Run Code Online (Sandbox Code Playgroud)

FirstActivity(将检索包值):

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    switch (requestCode) {
    case REQUEST_CODE_SAMPLE:
        if (resultCode == RESULT_OK) {
                bundle = getIntent().getExtras();
                //WHAT TO DO TO GET THE BUNDLE VALUES//
                String a = //STORE FIRST VALUE OF BUNDLE
                String b = //STORE SECOND VALUE OF BUNDLE
        }

        break;

    default:
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

Ner*_*een 5

您需要执行以下操作:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
  case REQUEST_CODE_SAMPLE:
    if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            //WHAT TO DO TO GET THE BUNDLE VALUES//
            String a = bundle.getString("A");
            String b = bundle.getString("B");
      }
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

但请注意,您必须使用传递给onActivityResultnot的意图getIntent

同样在SecondActivity 中,您需要使用一个新的意图:

button2.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Bundle bundle= new Bundle();
                    bundle.putString("A", "Aloha");
                    bundle.putString("B", "Bubbles");

                    Intent returnIntent = new Intent();
                    returnIntent.putExtras(bundle);

                    setResult(Activity.RESULT_OK, returnIntent);
                }
            });
}
Run Code Online (Sandbox Code Playgroud)