2016-03-16 30 views
0

獲取運行時錯誤java.lang.IllegalArgumentException:無法找到null的值,無法清楚地瞭解該錯誤的位置。嘗試了不同的代碼,但不明白錯誤在哪裏。只是轉換幾個單位。java.lang.IllegalArgumentException:找不到空值

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

從哪裏獲得'ifrom'和'rto'? –

+0

什麼是ifrom? – Mohit

+0

已編輯的代碼,它從spinner獲取項目 – sun

回答

0

正如在評論中討論,檢索所選項目兩個紡紗之前設置適配器。 你可以只此行之後寫的開關情況:

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

希望這簡化了!

相關問題