Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复执行setText()时的致命错误_Java_Android_Android Studio - Fatal编程技术网

Java 如何修复执行setText()时的致命错误

Java 如何修复执行setText()时的致命错误,java,android,android-studio,Java,Android,Android Studio,当我执行onClick方法时,应用程序崩溃。问题似乎出在setText funntion上 我已将问题缩小到给定的代码: 检测到的代码中没有语法错误 爪哇: 我认为您作为tipAmount和Total传递的内容存在类型问题,因为您的字符串格式化程序%1$d期望int而不是double或其他类型。首先,尝试使用Log打印它们 这将起作用 tip.setText(getResources().getString(R.string.Tip_Amount, 100)); showTotal.setTex

当我执行onClick方法时,应用程序崩溃。问题似乎出在setText funntion上

我已将问题缩小到给定的代码:

检测到的代码中没有语法错误 爪哇:


我认为您作为
tipAmount
Total
传递的内容存在类型问题,因为您的字符串格式化程序
%1$d
期望int而不是double或其他类型。首先,尝试使用
Log
打印它们

这将起作用

tip.setText(getResources().getString(R.string.Tip_Amount, 100));
showTotal.setText(getResources().getString(R.string.Total_Amount, 1000));
这行不通

tip.setText(getResources().getString(R.string.Tip_Amount, 100.00))
showTotal.setText(getResources().getString(R.string.Total_Amount, 1000.00));

请按照链接了解有关字符串格式的更多信息

我认为您作为
tipAmount
Total
传递的内容存在类型问题,因为您的字符串格式设置程序
%1$d
需要int而不是double或其他类型。首先,尝试使用
Log
打印它们

这将起作用

tip.setText(getResources().getString(R.string.Tip_Amount, 100));
showTotal.setText(getResources().getString(R.string.Total_Amount, 1000));
这行不通

tip.setText(getResources().getString(R.string.Tip_Amount, 100.00))
showTotal.setText(getResources().getString(R.string.Total_Amount, 1000.00));

请按照链接了解有关字符串格式的详细信息,您在strings.xml的
%1$d
中使用了
d
,因此它需要一个整数。但是,您正在发送一个double,因此会发生错误。由于需要小数部分,use可以使用
f
而不是
d
,并更新strings.xml,如下所示:

<string name="Tip_Amount">Tip: %1$.2f</string>
<string name="Total_Amount">Total: %1$.2f</string>
提示:%1$.2f
总计:%1$.2f

这样你也会得到一个很好的表示,点后两位数。顺便说一下,我建议对货币使用BigDecimal。您在strings.xml的
%1$d
中使用了
d
,因此它需要一个整数。但是,您正在发送一个double,因此会发生错误。由于需要小数部分,use可以使用
f
而不是
d
,并更新strings.xml,如下所示:

<string name="Tip_Amount">Tip: %1$.2f</string>
<string name="Total_Amount">Total: %1$.2f</string>
提示:%1$.2f
总计:%1$.2f

这样你也会得到一个很好的表示,点后两位数。顺便说一句,我建议对货币使用BigDecimal。

发布您的
logcat/stacktrace
请编辑,提前谢谢您可以发布您的活动代码吗?我认为您可能没有初始化
视图
可能是那些
提示
showTotal
中的一个,您还有
原因:java.util.IllegalFormatConversionException:d!=java.lang.Double
这意味着一些不正确的对话。发布您的完整活动代码,并准确显示哪一行代码有异常。不,我肯定有这些代码,但我发布了方法发布您的
logcat/stacktrace
请提交,提前谢谢您可以发布您的活动代码吗?我认为您可能没有初始化
视图
可能是那些
提示
showTotal
中的一个,您还有
原因:java.util.IllegalFormatConversionException:d!=java.lang.Double
这意味着一些不正确的对话。发布活动的完整代码,并准确显示哪行代码有异常。不,我肯定有,但我发布了方法