2017-11-05 10 views
-1

このアクティビティでは、カウントダウンタイマーを開始する必要があります。ボタンから開始する必要があります。以下は、コードスニペットを示しています。下記のJavaコードが動作しないのはなぜですか?

私はすべてを正しく行ったと思うが、うまくいかない - これはなぜですか?

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(); 
    } 
}); 
}} 

問題がtimer.setText((int型)millisUntilFinished/1000)である

<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"/> 
+1

この 'timer.setText((int)millisUntilFinished/1000)'を変更してください。 timer.setText( "" +(int)millisUntilFinished/1000); 'それでもうまくいかない場合は何が間違っているか教えてください – Raghunandan

+0

コンテキストの問題かもしれません。 CountDownTimerをアクティビティ変数として宣言してください。必要があり、例があれば、この質問の例を見ることができます:https://stackoverflow.com/questions/10032003/how-to-make-a-countdown-timer-in-android – Suaro

+0

あなたが何をすべきか教えてくださいそれは何をしているのか。 – cliff2310

答えて

0

XMLでボタン。部。

timer.SetText()には引数として文字列が必要です。

したがって、次を試してください timer.setText(String.valueOf(int)millisUntilFinished/1000));

100%で動作します。

0

問題は、以下のコードである:あなたは、引数のint種類を渡している間、

timer.setText((int)millisUntilFinished/1000); 

setText()方法のみString引数の型として受け入れます。したがって、のStringクラスの静的メソッドを使用して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の警告を読むことによって回避できると言うことができます2番目のステップとして、コンパイラのメッセージです。

関連する問題