1

私は Android 向けのプログラミングが初めてであることを前置きさせてください。私は無駄に調査するために私のデューデリジェンスを行ってきました。私は以下のソースコードを持っていますが、返す値を返す際に問題があります。

コードをEclipseに配置しましたが、エラーは発生しません。しかし、以下のコードをビルドすると、エラーが返されます。デバッグ ビューで値を調べた後、適切な値が TextView にバインドされていないことがわかります。

public class MyFirstActivity extends Activity {
/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      calculateResult(2012, 9, 29);
  }
  private void calculateResult(int year, int month, int day) {
      long days = 0L;
      int returning = 0;

      java.util.Calendar cal = new java.util.GregorianCalendar(year, month-1, day);

      long todayMI = new java.util.Date().getTime();
      long calMI = cal.getTimeInMillis();
      long millDiff = calMI - todayMI;

      if (millDiff < 0) {
            returning = 0;
      } else {
            days = millDiff / 1000 / 60 / 60;
            returning = (int) Math.ceil(days / 24f);
      }

      TextView days_int_remaining = (TextView) findViewById(R.id.days_int_remaining);
      days_int_remaining.setText(returning);
  }
}

それが役立つ場合は、レイアウト XML の TextView を次に示します。

<TextView
      android:id="@+id/days_int_remaining"
      android:layout_height="wrap_content"
      android:layout_width="wrap_content"
      android:layout_gravity="center_horizontal|center_vertical"
      android:shadowColor="#5000"
      android:shadowDx="4"
      android:shadowDy="3"
      android:shadowRadius="1"
      android:textColor="#fff"
      android:textSize="70dip"
      android:textStyle="bold"
/>

私が見逃しているのは単純なものかもしれません。コードをさらに理解するのに役立つものは何でも大歓迎です!

4

4 に答える 4

2

あなたが得るエラーは「ランタイムエラー - アプリケーションを閉じる」だと思います。

オーバーロードされたメソッドを見ると、 (これはおそらくあなたが望むものです) と(これはあなたが提供するものです) のsetText(...)引数を取ることがわかります。CharSequenceint resId

resId - 指定された属性を/values/strings.xml持つリソースがあるかどうかを探します。name

解決策は、次のものを提供することStringです。

days_int_remaining.setText(String.valueOf(returning));
于 2012-06-05T00:43:35.087 に答える
1

intreturningを文字列に変換します。

于 2012-06-05T00:42:25.757 に答える
1

ただ使う

TextView days_int_remaining = (TextView) findViewById(R.id.days_int_remaining);
days_int_remaining.setText(String.valueOf(returning));

それ以外の

TextView days_int_remaining = (TextView) findViewById(R.id.days_int_remaining);
days_int_remaining.setText(returning);
于 2012-06-05T00:45:39.703 に答える
0

このコードを試してください:

基本的に、setText(); を呼び出す前に、int 値を文字列に変換する必要があります。

public class MyFirstActivity extends Activity {
/** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      TextView days_int_remaining = (TextView) findViewById(R.id.days_int_remaining);
      int resultat = calculateResult(2012, 9, 29);
      days_int_remaining.setText(Integer.toString(resultat));
  }
  private int calculateResult(int year, int month, int day) {
      long days = 0L;
      int returning = 0;

      java.util.Calendar cal = new java.util.GregorianCalendar(year, month-1, day);

      long todayMI = new java.util.Date().getTime();
      long calMI = cal.getTimeInMillis();
      long millDiff = calMI - todayMI;

      if (millDiff < 0) {
            returning = 0;
      } else {
            days = millDiff / 1000 / 60 / 60;
            returning = (int) Math.ceil(days / 24f);
      }

       return returning;

  }
}
于 2012-06-05T00:47:24.290 に答える