在接口外使用字符串时获取null

时间:2014-07-17 12:30:36

标签: java android interface android-alertdialog

我创建了一个方法,我在按钮点击时显示了一个警告。我创建了一个界面来获取按钮上的文本以及它的位置。当我使用那个方法时我现在在我的另一个类中总是在字符串上得到一个空指针。

Alertmethod

protected void displayPopup(Context context, String title, final String[] array, final Button button, final boolean setText, final GetNamePosition getNamePosition) {
        builder = new AlertDialog.Builder(context);
        builder.setTitle(title);
        builder.setItems(array, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {

                    button.setText(array[i]);


                getNamePosition.getName(button.getText().toString());
                getNamePosition.getPosition(i);

                dialogInterface.dismiss();
            }
        });

        builder.show();
    }

我使用弹出窗口的其他类

private String[] chooseDocumentArray;
    private String userSelection;
case R.id.bt_choose_file:

                displayPopup(getActivity(), "Choose File", chooseDocumentArray, btChooseDoc, false, new GetNamePosition() {
                    @Override
                    public void getName(String name) {
                        userSelection = name;
                        if (userSelection.equals("Gallery")) {
                            intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                            startActivityForResult(intent, 0);
                        }
                    }

                    @Override
                    public void getPosition(int position) {

                    }
                });

//                if (userSelection.equals("Gallery")) {
//                    intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
//                    startActivityForResult(intent, 0);
//                }

        }

接口

public interface GetNamePosition {

    public void getName(String name);

    public void getPosition(int position);
}

我正在界面内使用字符串userselection,应用程序工作正常,但是当我在界面外使用它时{我已评论过}我强行关闭

1 个答案:

答案 0 :(得分:0)

userSelection仅在getName方法中初始化,其值为null,否则为null。

为避免获得空指针,请尝试此private String userSelection = "";或 在使用接口外的字符串之前进行空检查,即

if(userSelection != null){
     if (userSelection.equals("Gallery")) {
        intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, 0);
     }
}