Uso de la clase calendar

He creado un xml de diseño, que es en efecto una cuadrícula. Necesito para usarlo como un calendario y he leído sobre el calendario de la clase, pero he sido incapaz de obtener el código sugiere trabajar.

Cómo se podría ir sobre la visualización de la intensidad de años,meses y días en las diversas texto vistas?

Esto es lo que tengo hasta ahora:

Calendar c = Calendar.getInstance(); 
    int month = c.get(Calendar.MONTH);

    String month_name = Integer.toString(month);

    TextView monthdisp = (TextView) findViewById(R.id.month_disp);

    monthdisp.setText(month_name);

    setContentView(R.layout.main);

Sin embargo, una excepción de puntero nulo se genera en monthdisp.setText(month_name);

  • Añadido código que he probado
InformationsquelleAutor nexus490 | 2012-03-15

2 Kommentare

  1. 4

    Ver la guía de Desarrolladores de Android Para obtener el año, el mes y los días que tendría que utilizar la siguiente:

    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR); //get the current year
    int month = cal.get(Calendar.MONTH); //month...
    int day = cal.get(Calendar.DAY_OF_MONTH); //current day in the month
    
    //sets your textview to e.g. 2012/03/15 for today
    textview.setText("Year /month /day: "+ year + "/" + month + "/" + day);

    Como alternativa, puede utilizar SimpleDateFormat así:

    //set-up the desired formatting
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal = Calendar.getInstance();
    
    Date now = cal.getTime(); //set the current datetime in a Date-object
    
    //SimpleDateFormat.format( Date date ) returns a formatted string
    //with the predefined format
    String mTimeString = sdf.format( now ); //contains yyyy-MM-dd (e.g. 2012-03-15 for March 15, 2012)
    
    TextView textView = new TextView(this);
    textView.setText( mTimeString );

    Al revés también funciona:

    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    
    String mDateString = "14-05-2012";
    Date mDate = sdf.parse( mDateString ); //returns a Date-object
                                           //with date set to May 14, 2012
    • Estoy intentando el primer método que sugested sigo recibiendo puntero nulo excepciones en esta línea: monthdisp.setText(«Año / mes / día: «+ año + «/» + mes + «/» + día);
    • Parece monthdisp es nulo. .setText( null ) no lanzar una NullPointer.
    • Usted está tratando de llegar a su TextView de su diseño, antes de que en realidad estás inflando su diseño. Esto significa que su TextView no existe todavía en el diseño. Mover setContentView(R.layout.main); a la parte superior y debería funcionar bien. Ponerlo justo debajo de la super.onCreate(savedInstanceState);.
    • ahh ahora entiendo, gracias que trabajado, he leído la documentación y ver la get(Calendar.MES) devuelve un entero que hay una manera de que se me muestra el mes como una palabra?
    • Sí, echa un vistazo a el método del Calendario.getDisplayName() en la guía del desarrollador para Calendario. O de nuevo, puede utilizar SimpleDateFormat para esto.
  2. 2

    Las otras respuestas aquí proporcionan una buena información sobre el Calendario de la clase y la fecha/hora de la manipulación, pero no es por eso que su código es tirar un NullPointerException:

    TextView monthdisp = (TextView) findViewById(R.id.month_disp);
    
    monthdisp.setText(month_name); //NPE here indicates monthdisp is null

    Llamar findViewById(R.id.month_disp) devuelto null. Esto es probablemente porque usted no ha inflado su punto de vista, sin embargo, o month_disp sólo no está en su diseño.

    Normalmente, la vista de la inflación se produce en el Actividad.onCreate() método, y se puede hacer de varias maneras, por ejemplo setContentView(). Comprobar que usted está haciendo esto antes de llamar findViewById(), y que el diseño que se infla en realidad tiene que ver en ello.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea