将浮点数转换为字符串会导致空指针异常



我试图在我的布局上的 TextView 中将浮点值"度"显示为字符串,但在 tv.setText(mydegrees( 上收到一个 NullPointerException; 我已经尝试了许多方法将浮点数转换为可用的字符串值,但似乎无法让 TextView 显示浮点值。 任何帮助将不胜感激!

注意:度数由 onTouchEvent 操作

来自 XML 的文本视图:

<TextView
android:id="@+id/current_degrees"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_vertical|center"
android:text="@string/app_name"
android:textColor="#FFFF00" />

爪哇代码:

float degrees = (float) -65;
String mydegrees = String.format("%.2f", degrees) ;
//...
public void pushClick(View pushClick) {
    switch (pushClick.getId()) {
    case R.id.btn_push:
        TextView tv = (TextView) findViewById(R.id.current_degrees);
        tv.setText(mydegrees);

正如tigrang指出的那样,你的问题不是将浮点数转换为字符串。你拥有的东西应该可以正常工作。您的问题是findViewById()出于某种原因返回null值,大概是因为没有视图具有您提供的 ID。在尝试对其执行任何操作之前,请确保 ID 正确且您获取的是有效的 TextView 实例。

编辑:正如@Jake King所指出的,在我之前的回答中,我没有注意细节(您的mydegree成员是一个String实例。

这样,您获得NPE的唯一原因是您的tv TextView为空。

请检查您用于活动/渲染器/视图的布局 xml 文件,并确保有TextView或其任何扩展名和 @+id/current_degrees .

此外,您的标题非常具有误导性:如果您如上所述声明和初始化了float,则不会有任何NullPointerException

String degreesStr = Float.parseFloat(degrees);

试试这个,将浮点值转换为字符串。

简单.. 使用这个

tv.setText(degrees+""); //Degrees is the float value

最新更新