为什么下面的 Java 代码不起作用?
Why does the Java code below not work?
我需要在这个activity中启动倒数计时器。它应该从按钮开始。下面我带来了代码片段。
我认为我做的一切都是正确的,但它不起作用 - 这是为什么?
public class Step5 extends AppCompatActivity {
Button mgo;
public TextView timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.step5);
timer = (TextView) findViewById(R.id.timer);
mgo = (Button) findViewById(R.id.go);
mgo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(900000,1000) {
@Override
public void onTick(long millisUntilFinished) {
timer.setText((int)millisUntilFinished/1000);
}
@Override
public void onFinish() {
timer.setText("Done");
}
}.start();
}
});
}}
xml
中的按钮
<Button
android:id="@+id/go"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#FF3D00"
android:textColor="#ffffff"
android:text="@string/Start"
android:layout_alignParentBottom="true"/>
问题出在timer.setText((int)millisUntilFinished/1000);部分。
timer.SetText() 需要一个字符串作为参数。
所以试试下面的
timer.setText(String.valueOf((int)millisUntilFinished/1000));
它将 100% 有效。
问题出在下面的代码片段上:
timer.setText((int)millisUntilFinished/1000);
当您传递 int
类型的参数时,setText()
方法仅接受 String
作为参数类型。因此,您可以尝试使用 String class 的 valueOf()
静态方法将 int
值类型转换为 String
对象。以下是建议的解决方案:
timer.setText(String.valueOf((int)millisUntilFinished/1000));
不过需要注意的是,如果你编译你提交的代码,你会得到以下编译错误:
error: incompatible types: int cannot be converted to String
这意味着你的代码将被编译错误,你肯定会被编译器注意到。
此外,如果您使用像 Netbeans 这样的 Java IDE,那么您会通过如下通知注意到此错误:
incompatible types: int cannot be converted to String
所以结论是,可以通过阅读 IDE 的警告和作为第二步的编译器消息来避免此类错误。
我需要在这个activity中启动倒数计时器。它应该从按钮开始。下面我带来了代码片段。
我认为我做的一切都是正确的,但它不起作用 - 这是为什么?
public class Step5 extends AppCompatActivity {
Button mgo;
public TextView timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.step5);
timer = (TextView) findViewById(R.id.timer);
mgo = (Button) findViewById(R.id.go);
mgo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new CountDownTimer(900000,1000) {
@Override
public void onTick(long millisUntilFinished) {
timer.setText((int)millisUntilFinished/1000);
}
@Override
public void onFinish() {
timer.setText("Done");
}
}.start();
}
});
}}
xml
中的按钮<Button
android:id="@+id/go"
android:layout_width="match_parent"
android:layout_height="60dp"
android:background="#FF3D00"
android:textColor="#ffffff"
android:text="@string/Start"
android:layout_alignParentBottom="true"/>
问题出在timer.setText((int)millisUntilFinished/1000);部分。
timer.SetText() 需要一个字符串作为参数。
所以试试下面的 timer.setText(String.valueOf((int)millisUntilFinished/1000));
它将 100% 有效。
问题出在下面的代码片段上:
timer.setText((int)millisUntilFinished/1000);
当您传递 int
类型的参数时,setText()
方法仅接受 String
作为参数类型。因此,您可以尝试使用 String class 的 valueOf()
静态方法将 int
值类型转换为 String
对象。以下是建议的解决方案:
timer.setText(String.valueOf((int)millisUntilFinished/1000));
不过需要注意的是,如果你编译你提交的代码,你会得到以下编译错误:
error: incompatible types: int cannot be converted to String
这意味着你的代码将被编译错误,你肯定会被编译器注意到。
此外,如果您使用像 Netbeans 这样的 Java IDE,那么您会通过如下通知注意到此错误:
incompatible types: int cannot be converted to String
所以结论是,可以通过阅读 IDE 的警告和作为第二步的编译器消息来避免此类错误。