Java 传递bundle实例以放置选择器

Java 传递bundle实例以放置选择器,java,android,bundle,google-places-api,Java,Android,Bundle,Google Places Api,我正在开发一个android应用程序,其主要目的是通过管理员更新员工的工作地点。现在,当我想从我的recycler视图(与我的UserManagerAdapter连接的员工列表)更改/更新员工的位置时,我必须将该员工的用户名传递给place picker intent,以便管理员在选择所需位置时,该用户的数据库将相应地更改 我的步骤(2个步骤) 我已将用户名作为bundle传递给place picker 我的用户管理器 holder.locationTv.setOnClickListe

我正在开发一个android应用程序,其主要目的是通过管理员更新员工的工作地点。现在,当我想从我的recycler视图(与我的UserManagerAdapter连接的员工列表)更改/更新员工的位置时,我必须将该员工的用户名传递给place picker intent,以便管理员在选择所需位置时,该用户的数据库将相应地更改

我的步骤(2个步骤)

  • 我已将用户名作为bundle传递给place picker
  • 我的用户管理器

         holder.locationTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                launchPicker(data.get(position).getUserName());
            }
        });
    
        private void launchPicker(String userName) {
        PlacePicker.IntentBuilder builder = new PlacePicker.IntentBuilder();
        Bundle bundle = new Bundle();
    
        bundle.putString(USERNAME,userName);
        try {
            fragment.startActivityForResult(builder.build(fragment.getActivity()),PLACE_PICKER_REQUEST,bundle);
        } catch (GooglePlayServicesRepairableException e) {
            e.printStackTrace();
        } catch (GooglePlayServicesNotAvailableException e) {
            e.printStackTrace();
        }
    
    }
    
  • 我在一个片段中收到了位置请求,并更新了该特定用户的位置
  • 我的ManageUserFragment

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == PLACE_PICKER_REQUEST){
            if(resultCode == RESULT_OK){
                Place place = PlacePicker.getPlace(getContext(),data);
                address = place.getAddress().toString();
                String latLng = place.getLatLng().toString();
                latLang = latLng;
    
                //update user's decided location
                Bundle bundle = data.getExtras();
                String userName = bundle.getString(USERNAME);// it returns null, Why?
                updateLocation(latLang,userName);
                Toast.makeText(getContext(), latLng, Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(getContext(), getContext().getText(R.string.locationError), Toast.LENGTH_SHORT).show();
            }
        }
    }
    
    我的常数是

    public static final String USERNAME="Username";
    
    现在,

    我的问题是

    为什么bundle.getString(用户名)总是返回null

    如何将数据传递给PlacePicker intent,以便我们可以在 活动结果


    在复制了您的案例并进行了一点研究之后,我发现
    startActivityForResult()
    中的第三个参数不是用来将一组值传递给
    onActivityResult
    ,而是用来将选项传递给安卓本身,您可以找到这些选项。因此,如果您想要传递任何数据,您必须使用intent和
    putExtra(“用户名”,USERNAME)
    ,您可以使用
    getStringExtra(“用户名”)
    检索它。答案中也解释了这一点。

    只是想确定是否调用了
    onActuvityResult
    ?你也在你的活动中覆盖了它吗?@lieforbanana是的,它调用正确,我通过在那里应用断点检查它是否返回null。