0

クロノメーターの値を掛けようとしているか、値を文字列にしようとしています。

文字列にして表示しようとするたびtoast.show()に、アプリケーションがクラッシュします。表示される値を取得できますEditTextが、クロノメーターを機能させることができないようです。両方の弦timefinそれをクラッシュさせます。コードは次のとおりです。

String hour = String.valueOf(mText.getText());
String time = String.valueOf(mChronometer.getBase() - stoppedMilliseconds);
int h = java.lang.Integer.parseInt(hour) / 60;
int t = java.lang.Integer.parseInt(time) * 1000 / 60;
int mm = h * t;
mon.setText(Integer.toString(mm));
String fin = "" + mm;


Toast.makeText(PoopActivity.this,
        "Money made: " + fin, Toast.LENGTH_LONG).show();
4

1 に答える 1

0

このコードの機能をあいまいにするいくつかの欠陥があります。

  • time常に負です。減算引数を交換します。
  • hour時間から分に変換するときは、60 で割るのではなく掛けます。
  • ミリ秒から分に変換するときtimeは、1000 を掛けるのではなく割ります。
  • mm分単位の収量の計算。これではほとんど意味がありません。
  • getApplicationContextの代わりに使用しPoopActivityます。以外のアプリケーションPoopActivityが実行されている可能性があります。
  • 例外処理はありません。私たちが知っている限りでmonは、null でsetText例外がスローされる可能性があります。あなたのコードを試してみてください - 最後にブロックしてください:

String fin = "";

try
{
    // most of your code goes here

    mon.setText(Integer.toString(mm));
    String fin += mm;
}
catch (Exception e)
{
    // display the exception here if so inclined
}
finally
{
    Toast.makeText(PoopActivity.this,
    "Money made: " + fin, Toast.LENGTH_LONG).show();
}

ただし、fin負の数を含む文字列は問題ありません。

于 2012-07-17T16:36:53.270 に答える