2

我有一个联系人选择方法,它使用两个附加功能来指定您是在我的应用程序中创建新的联系人快捷方式还是编辑现有的联系人快捷方式。

问题是无论我做什么,额外的东西似乎总是为空,当我尝试访问它们时会导致 nullPointerException。

我怀疑将意图类型设置为ContactsContract.Contacts.CONTENT_TYPE重置任何用户定义的附加内容,但我不确定。

这是我目前正在做的事情:

联系人拣货意图

 Intent intent = new Intent(Intent.ACTION_PICK);
                intent.setType(ContactsContract.Contacts.CONTENT_TYPE);
                Bundle extras = new Bundle();
                extras.putBoolean("isEditing", isEditing);
                extras.putLong("shortcut", shortcut.getId());
                intent.putExtras(extras);
                startActivityForResult(intent, PICK_CONTACT_REQUEST);

onActivityResult()

switch (requestCode) {
            case (PICK_CONTACT_REQUEST):
                if (resultCode == getActivity().RESULT_OK) {
                    Uri contactData = data.getData();
                    Bundle bundle = data.getExtras();
                    Boolean isEditing = false;
                    long shortcutId = 0;
                    if (bundle != null) {
                        Toast.makeText(getActivity(), "Bundle Not Null", Toast.LENGTH_SHORT).show();
                        if (bundle.containsKey("isEditing")) {
                            isEditing = bundle.getBoolean("isEditing", false);
                            Toast.makeText(getActivity(), "" + isEditing, Toast.LENGTH_SHORT).show();
                        }
                        if (bundle.containsKey("shortcutId")) {
                            shortcutId = bundle.getLong("shortcutId", 0);
                            Toast.makeText(getActivity(), "" + shortcutId, Toast.LENGTH_SHORT).show();
                        }
                    }

祝酒词从未显示,因为我猜找不到捆绑包。我也尝试过不同的工作流程,使用Intent.putExtraString("isEditing", value)然后intent.getStringExtra("isEditing", false)跳过将附加内容打包成捆绑包的方式获取它们(还不太了解这两个工作流程之间的区别),但是唉,我遇到了同样的问题。

任何帮助将不胜感激。

4

1 回答 1

-1

编辑:当你把你的long价值,你做

extras.putLong("shortcut", shortcut.getId());

所以你必须像检索它一样

long shortcutId = bundle.getLong("shortcut", 0);

然后,您必须从启动的中获取Bundle额外内容,如下所示。IntentActivity

switch (requestCode) {
    case (PICK_CONTACT_REQUEST):
        if (resultCode == getActivity().RESULT_OK) {
            Uri contactData = data.getData();
            //Here you get the intent extras
            Bundle bundle = getIntent().getExtras();
            //Boolean isEditing = false;
            //long shortcutId = 0;
            if (bundle != null) {
                Toast.makeText(getActivity(), "Bundle Not Null", Toast.LENGTH_SHORT).show();
                if (bundle.hasExtras()){
                    boolean isEditing = bundle.getBoolean("isEditing", false);                            
                    long shortcutId = bundle.getLong("shortcut", 0);
                    if(isEditiong != null)
                        Toast.makeText(getActivity(), "" + isEditing, Toast.LENGTH_SHORT).show();
                    if(shortcutId != null)
                        Toast.makeText(getActivity(), "" + shortcutId, Toast.LENGTH_SHORT).show();
                }
            }
        }            
    }
    break;
}
于 2015-01-31T13:34:20.313 回答