AlertDialog中的NumberPicker错误

时间:2016-10-07 13:14:34

标签: android nullpointerexception alertdialog numberpicker dialogfragment

我在号码选择器方面遇到了麻烦。当我尝试在numberpicker的java代码中添加最小值和最大值时,我收到此错误

  

尝试调用虚方法' void android.widget.NumberPicker.setMinValue(int)'在空对象引用上

显然,它不会识别我的号码选择器,因此我无法添加值。

有人找到了这个问题的解决方案here,但它并不适合我。因为在下一个对话框中我需要另一个数字选择器并根据前一个进行调整。

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState){
        AlertDialog.Builder bodyBuilder = new AlertDialog.Builder(getActivity());
        LayoutInflater inflator = getActivity().getLayoutInflater();
        bodyBuilder.setTitle(R.string.title);
        NumberPicker np = (NumberPicker) getActivity().findViewById(R.id.nambir);
        np.setMinValue(1);
        np.setMaxValue(100);
        final int npValue= np.getValue();
        bodyBuilder.setView(inflator.inflate(R.layout.layout_diyalog, null))
                .setPositiveButton("Continue", new DialogInterface.OnClickListener(){
                    @Override
                            public void onClick(DialogInterface dialog, int id){
                        Intent intent = new Intent(getActivity(), Olurmuki.class);
                        intent.putExtra("value", npValue);
                        startActivity(intent);
                    }
                })
                .setNegativeButton("Cancel",new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialog, int id){
                        MyDialog.this.getDialog().cancel();
                    }
                });
        return bodyBuilder.create();
}

2 个答案:

答案 0 :(得分:0)

请注意我是初学者,我不是Android Studio,但希望这会有用。

如果我理解您想要在对话框中访问您的号码选择器的问题?如果数字选择器在对话框内,那么您需要访问构建器视图,然后获取数字选择器。

这一行很可能是问题所在。

int numberOfInches =(int)((100.0/254)*101);

请改用:

NumberPicker np = (NumberPicker) getActivity().findViewById(R.id.nambir);

这将在警报对话框的视图中查找数字选择器,您应该获得参考。

请注意,如果这不起作用,您可以参考此内容,它可能适合您! https://stackoverflow.com/a/13026250/4502550

答案 1 :(得分:0)

试试这个

创建一个getContext()

public Context getContext(){return this;}

然后

NumberPicker np = (NumberPicker) getContext().findViewById(R.id.nambir);

如果确实有效,只需在活动中创建没有xml的数字选择器

public void Dialog(){


    final android.support.v7.app.AlertDialog.Builder alert = new android.support.v7.app.AlertDialog.Builder(this,R.style.CustomDialog);
    alert.setCancelable(true);


    LinearLayout l1 = new LinearLayout(getApplicationContext());


    l1.setOrientation(LinearLayout.HORIZONTAL);
    final NumberPicker number = new NumberPicker((this));
    number.setMaxValue(12);
    number.setMinValue(1);
    number.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS);
    number.setWrapSelectorWheel(true);