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 Comentarios

  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.

Dejar respuesta

Please enter your comment!
Please enter your name here