2016-07-10 23 views
0

erhalten Guten Tag. Ich habe eine Klasse, die mir den aktuellen Tag-Namen in einem String geben soll, aber anstatt mir den Namen des aktuellen Tages zu geben, gebe ich den Namen des Vortags.Den Namen des Vortages anstelle von heute mit Kalender

Ich habe überprüft, was los ist, auf dem Debugger, und anscheinend funktioniert der Schalter am aktuellen Tag (im Moment ist es Sonntag) und legt den richtigen Text und das Bild auf meinem TextView und ImageView. Aber sobald der Debugger beendet ist, sind das Bild und der Text diejenigen, die für Samstag gedacht sind.

Hier ist meine Klasse:

private void checkWeekday() { 

    String week_day; 
    Locale loc = new Locale("es","MX"); 
    SimpleDateFormat day_format = new SimpleDateFormat("EEEE", loc); 

    Calendar calendar = Calendar.getInstance(); 
    week_day = day_format.format(calendar.getTime()); 
    week_day = week_day.toLowerCase(); 

    switch (week_day) { 
     case "domingo": 
      textView_weekday_name.setText(sunday); 
      imageView_diets_weekday.setImageDrawable(drawable_sunday); 
     case "lunes": 
      textView_weekday_name.setText(monday); 
      imageView_diets_weekday.setImageDrawable(drawable_monday); 
     case "marter": 
      textView_weekday_name.setText(tuesday); 
      imageView_diets_weekday.setImageDrawable(drawable_tuesday); 
     case "miércoles": 
      textView_weekday_name.setText(wednesday); 
      imageView_diets_weekday.setImageDrawable(drawable_wednesday); 
     case "jueves": 
      textView_weekday_name.setText(thursday); 
      imageView_diets_weekday.setImageDrawable(drawable_thursday); 
     case "viernes": 
      textView_weekday_name.setText(friday); 
      imageView_diets_weekday.setImageDrawable(drawable_friday); 
     case "sábado": 
      textView_weekday_name.setText(saturday); 
      imageView_diets_weekday.setImageDrawable(drawable_saturday); 
    } 

} 

Dinge zu beachten: Diese Methode wird aufgerufen auf einem @AfterViews Verfahren wird, in einem Fragment.

Ich habe bereits versucht, das Kalenderbit zu meiner @AfterViews Hauptmethode zu nehmen, aber es erhält immer noch den Namen des Vortages.

Ich vermute, ich versuche, den Tag Namen an den falschen Ort zu bekommen, aber egal wo ich es hinstelle, es wird mir noch Samstag geben.

als Referenz, das ist wie mein @AfterViews Methode sieht:

@AfterViews 
protected void init() { 

    checkWeekday(); 

    boolean logged = Prefs.getBoolean(user_logged, false); 
    boolean subbed = Prefs.getBoolean(user_subscribed, false); 
    String email = Prefs.getString(user_mail, ""); 

    mixpanel = MixpanelAPI.getInstance(getContext(), mixpanel_token); 

    setHasOptionsMenu(true); 

    if (logged && subbed) { 

     List<UserMeals> meals = new RushSearch().find(UserMeals.class); 

     if(meals.size() != 0) { 

      setDataFromLocal(); 
      onClickHandler(); 

     } else { 

      try { 
       checkIfNewPlan(email, "fetch"); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
      onClickHandler(); 
     } 
    } else { 
     emptyLayout("nosub"); 
    } 

} 

Dank.

EDIT

ich fehlte Pause auf jeden Fall auf meinem Schalter. So beschämt darüber! Vielen Dank!

+0

Haben Sie 1 zum Monatswert hinzugefügt, da er nullindiziert ist? – Eenvincible

+1

Ist das Systemdatum korrekt? – Aviator

+0

@Envincible Wo würde ich das tun? – herrmartell

Antwort

1

Um aktuelle Datum mit dem Kalender Instanz, benutzen Sie bitte diese Methode verwenden, zu erhalten:

public static String getCurrentDate(){ 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    return (month+1) +"/"+ day + "/" + year; 
} 

Seit der Kalendermonat ist 0-basiert, was bedeutet, Januar tatsächlich 0 statt 1 ist, müssen Sie 1, um es hinzuzufügen !

UPDATE

ich auf Ihrer switch-Anweisung nur an und es keinen Bruch in der Case-Anweisung?

switch (week_day) { 
    case "domingo": 
     textView_weekday_name.setText(sunday); 
     imageView_diets_weekday.setImageDrawable(drawable_sunday); 
     break; 
    case "lunes": 
     textView_weekday_name.setText(monday); 
     imageView_diets_weekday.setImageDrawable(drawable_monday); 
     break; 
    case "marter": 
     textView_weekday_name.setText(tuesday); 
     imageView_diets_weekday.setImageDrawable(drawable_tuesday); 
     break; 
    case "miércoles": 
     textView_weekday_name.setText(wednesday); 
     imageView_diets_weekday.setImageDrawable(drawable_wednesday); 
     break; 
    case "jueves": 
     textView_weekday_name.setText(thursday); 
     imageView_diets_weekday.setImageDrawable(drawable_thursday); 
     break; 
    case "viernes": 
     textView_weekday_name.setText(friday); 
     imageView_diets_weekday.setImageDrawable(drawable_friday); 
     break; 
    case "sábado": 
     textView_weekday_name.setText(saturday); 
     imageView_diets_weekday.setImageDrawable(drawable_saturday); 
     break; 
} 

Ich habe das Gefühl, das ist das Problem!

+0

Ihr Code funktioniert, aber gibt mir das 00/00/0000 Format, das ist nicht das Problem an sich, aber ich habe meinen eigenen Code doppelt überprüft und es gibt mir den korrekten aktuellen Tag. Der Switch-Fall arbeitet am aktuellen Tag, und auf dem Debugger erhalten TextView und ImageView den richtigen Text und die richtigen Bilder, aber wenn die Anwendung das Debugging beendet hat, sehe ich immer noch das falsche Bild und den falschen Tag. – herrmartell

+0

Ich habe meine Antwort aktualisiert; Sie fehlen die break-Anweisung für jede case-Anweisung in Ihrer switch-Anweisung. – Eenvincible

+0

Sie sind so richtig. Es ist mir so peinlich, danke! – herrmartell