2012-06-05 2 views
1

Позвольте мне предисловие, что я новичок в программировании для Android. Я прилагаю все усилия для исследования безрезультатно. У меня есть исходный код ниже, и у меня возникают проблемы с возвратом возвращаемого значения.setText не отображает значение для TextView

У меня есть код, заложенный на затмение, и это не вызывает никаких ошибок. Но когда я строю код ниже, он возвращается с ошибкой. После проверки значений в отладочном представлении я вижу правильные значения, которые просто не привязаны к 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); 
    } 
} 

Если это помогает, вот TextView на моем макета XML:

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

Это может быть что-то простое, что я пропавшими без вести. Все, что поможет мне понять код, ценится!

ответ

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); 
+0

Спасибо! Это сработало! Я ценю помощь! – drukelly

1

Превратите свой returning int в строку.

2

Я считаю, что ошибка, которую вы получаете, - это «ошибка времени выполнения - закрыть приложение».

Если посмотреть на метод setText(...), который перегружен вы увидите, что она принимает аргументы с CharSequence (это, вероятно, что вы хотите) и int resId (это то, что вы предоставляете).

resId - будет искать, если есть ресурс в /values/strings.xml с заданным атрибутом name.

Разрешение обеспечить String:

days_int_remaining.setText(String.valueOf(returning)); 
0

Попробуйте этот код:

В принципе, вы должны преобразовать значение int перед строкой перед вызовом setText();

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; 

    } 
} 
+0

Он обновляет TextView в интерфейсе пользовательского интерфейса - метод вызова не изменяет текущий поток. (после того как вы изменили свой ответ, этот комментарий больше недействителен) – Xeon

+0

да я обновил ответ Спасибо –

Смежные вопросы