【问题标题】:Passing bundle instance to place picker intent传递捆绑实例以放置选择器意图
【发布时间】:2018-04-18 05:34:46
【问题描述】:

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

我的步骤(2 个步骤)

  1. 我已将用户名作为捆绑包传递给地点选择器意图。

我的用户管理器适配器

     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();
    }

}
  1. 我在片段内收到位置请求并更新该特定用户的位置

我的管理用户片段

@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(USERNAME) 总是返回 null?

如何将数据传递给位置选择器意图,以便我们可以接收它 活动结果?

【问题讨论】:

  • 只是要求确认,onActuvityResult 被调用?你也在你的活动中覆盖它吗?
  • @LieForBananas 是的,它正在正确调用,我已经通过在那里应用断点检查它是否返回 null。

标签: java android bundle google-places-api


【解决方案1】:

在复制你的案例并研究了一下之后,我发现startActivityForResult()中的第三个参数不是用于将一组值传递给onActivityResult,它是用于将选项传递给Android本身,你可以找到那些here。因此,如果您想传递任何数据,您必须使用putExtra("USERNAME", username) 的意图,您可以使用getStringExtra("USERNAME") 检索它。 this 答案中也有解释。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2021-07-16
    • 2015-02-03
    • 1970-01-01
    • 2013-11-24
    • 1970-01-01
    相关资源
    最近更新 更多