java.lang.IllegalArgumentException:找不到null的值

时间:2016-03-16 06:12:45

标签: android android-fragments illegalargumentexception

获取运行时错误java.lang.IllegalArgumentException:无法找到null的值,因此无法清楚地了解bug的位置。尝试了不同的代码但不了解bug的位置。只转换几个单位。

 public class UniqueConverter extends Fragment {

    private Spinner fromDetails, toDetails;
    private EditText fromInput, toInput;


    public static UniqueConverter setArguments(int position) {
        UniqueConverter uniqueConverter = new UniqueConverter();
        Bundle args = new Bundle();
        args.putInt("position", position);
        uniqueConverter.setArguments(args);
        return uniqueConverter;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_uniquelayout, container, false);

final String[] temperatureform, weightform;
 temperatureform = getResources().getStringArray(R.array.temperatureform);
        weightform = getResources().getStringArray(R.array.weightform);

    onInitVies(view);
    int position = getArguments().getInt("position");
    String ifrom = (String) fromDetails.getSelectedItem();
    String rto = (String) toDetails.getSelectedItem();
    Double inp;
    double out = 0;

 switch (position) {
            case 0:
                setAdapter(temperatureform, "Celsius", "Fahrenheit");
                TemperatureConverter con = new TemperatureConverter();
                TemperatureConverter.Units fromUnit = TemperatureConverter.Units.fromString(ifrom);
                TemperatureConverter.Units toUnit = TemperatureConverter.Units.fromString(rto);
                inp = Double.valueOf(fromInput.getText().toString());
                out = con.TemperatureConvert(fromUnit,toUnit,inp);
                break;
            case 1:
                setAdapter(weightform, "Kilograms", "Grams");
                WeightConverter converter = new WeightConverter();
                WeightConverter.Inus fromInus = WeightConverter.Inus.fromString(ifrom);
                WeightConverter.Inus toInus = WeightConverter.Inus.fromString(rto);
                inp = Double.valueOf(fromInput.getText().toString());
                out = converter.WeightConvert(fromInus, toInus, inp);
                break;

 final double finalOut = out;
        fromInput.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {

                }

                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {

                }

                @Override
                public void afterTextChanged(Editable s) {

                    if (!fromInput.getText().toString().equals(""))
                    {
                        toInput.setText(String.valueOf(finalOut));
                    }
                    else
                    {
                        toInput.setText("");
                    }

                }
            });


            return view;

    }


    private void setAdapter(String[] spinnerItems, String fromDefaultText, String toDefaultText) {
        fromDetails.setAdapter(new CustomSpinnerAdapter(getContext(), R.layout.spinner_item, spinnerItems, fromDefaultText));
        toDetails.setAdapter(new CustomSpinnerAdapter(getContext(), R.layout.spinner_item, spinnerItems, toDefaultText));
    }

    private void onInitVies(View view) {
        fromDetails = (Spinner) view.findViewById(R.id.fromSpinner);
        toDetails = (Spinner) view.findViewById(R.id.toSpinner);

        fromInput = (EditText) view.findViewById(R.id.fromInput);
        toInput = (EditText) view.findViewById(R.id.toInput);
    }
}

logcat的:

FATAL EXCEPTION: main
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime: Process: com.cloudicalabs.converters, PID: 6246
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime: java.lang.IllegalArgumentException: Cannot find a value for null
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime:     at com.cloudicalabs.converters.datahandlers.TemperatureConverter$Units.fromString(TemperatureConverter.java:27)
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime:     at com.cloudicalabs.converters.fragments.UniqueConverter.onCreateView(UniqueConverter.java:74)
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime:     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1962)
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
03-16 01:58:38.255 6246-6246/com.cloudicalabs.converters E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)

1 个答案:

答案 0 :(得分:0)

如评论中所述,在为两个微调器检索所选项目之前设置适配器。 您可以在此行之后编写该开关案例:

 private boolean GivenPermissions() {
        int hasLocationPermission1 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_FINE_LOCATION);
        int hasLocationPermission2 = ActivityCompat.checkSelfPermission(this,Manifest.permission.ACCESS_COARSE_LOCATION);
        List<String> permissions = new ArrayList<String>();
        if (hasLocationPermission1 != PackageManager.PERMISSION_GRANTED) {
            permissions.add(Manifest.permission.ACCESS_FINE_LOCATION);
        }
        if (hasLocationPermission2 != PackageManager.PERMISSION_GRANTED) {
            permissions.add(Manifest.permission.ACCESS_COARSE_LOCATION);
        }
        if (!permissions.isEmpty()) {
            ActivityCompat.requestPermissions(this, permissions.toArray(new String[permissions.size()]), REQUEST_CODE_ASK_PERMISSIONS);
            return false;
        }
        return true;
    }

希望这会简化!