我有一个EditText
,其中我得到了数字,需要将它们转换为float
,但仍然会得到相同的错误 - Null Pointer Exception
。
这是我的代码:
public class Basic extends Fragment implements AdapterView.OnItemSelectedListener {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.basic, container, false);
Spinner spinnerLenght = (Spinner) view.findViewById(R.id.spinnerLenght);
spinnerLenght.setOnItemSelectedListener(this);
ArrayAdapter<String> lenghtAdapter;
lenghtAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.basic_string_lenght));
lenghtAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerLenght.setAdapter(lenghtAdapter);
return view;
}
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String itemLenght = parent.getItemAtPosition(position).toString();
EditText editTextLenght = (EditText) view.findViewById(R.id.editTextLenght);
float floatLenght;
floatLenght = Float.parseFloat(editTextLenght.getText().toString());
float result_mm = 0;
if (itemLenght.equals("mm")){
result_mm = floatLenght * 1000;
}
Toast.makeText(parent.getContext(), (int) result_mm, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
}
这是logcat:
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.dusan.unit, PID: 5181
java.lang.NullPointerException
at com.example.dusan.unit.Basic.onItemSelected(Basic.java:46)
at android.widget.AdapterView.fireOnSelected(AdapterView.java:956)
at android.widget.AdapterView.access$200(AdapterView.java:49)
at android.widget.AdapterView$SelectionNotifier.run(AdapterView.java:920)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
我也在double
上试过了。
我也遇到null = ""
的问题
我读了很多关于此的内容但无法找到解决方案。
答案 0 :(得分:0)
1)检查你是否写了editText的正确id; 2)从膨胀的布局中找到onCreateView中的editText,或者将布局视图作为类变量,然后在onItemClick中找到她的编辑文本
答案 1 :(得分:0)
您使用的是错误的ID和类。
EditText editTextLenght = (EditText) view.findViewById(R.id.editTextLenght);
正确的ID为android.R.id.text1
正确的类是TextView
。
请参阅What is "android.R.layout.simple_list_item_1"?,因为这是您在适配器中设置的布局。
如果问题是parent.getItemAtPosition(position).toString();
,请不要使用它。
如果要访问适配器中的数据,请将其移动到可以使用成员变量访问的范围
public class Basic extends Fragment implements AdapterView.OnItemSelectedListener {
private ArrayAdapter<String> lenghtAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.basic, container, false);
Spinner spinnerLenght = (Spinner) view.findViewById(R.id.spinnerLenght);
spinnerLenght.setOnItemSelectedListener(this);
this.lenghtAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, getResources().getStringArray(R.array.basic_string_lenght));
然后,使用getItem
方法而不是尝试查找视图
float floatLenght = Float.parseFloat(lenghtAdapter.getItem(position));
另外,请正确拼写长度
答案 2 :(得分:0)
查看主要(您问的)问题,您希望将number
转换为float
的{{1}}。
首先导入:
EditText
import android.widget.EditText;
EditText editTextLenght = (EditText) View.findViewById(R.id.editTextLenght);
floatLenght = Float.parseFloat(editTextLenght.getText().toString());
//this code used in java programs.in android you can use below
try{
float floatLenght = Float.valueOf(editTextLenght.getText().toString());
} catch (NumberFormatException e) {
e.printStackTrace();
}
(第一个字母很小)是原始类型,float
是用于从Float
转换为string
的包装类。
您不需要更改其他代码。