IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants graphiques Android Discussion :

Mon spinner vaut null


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 40
    Par défaut Mon spinner vaut null
    Bonjour,

    Je ne comprends pas pourquoi mon "spinneryear" vaut null. pourtant les années figurent bien à l'intérieur quand le lance l'application. Mais il m'est impossible d'en extraire la données sélectionnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
     
    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main_tuto);
     
            /** Shared preferences to get account Id and Name **/
            SharedPreferences preferences = getSharedPreferences("filePrefName", MODE_PRIVATE);
            String accountId = preferences.getString("accountId", "");
            String accountName = preferences.getString("accountName", "");
     
            compteId = Integer.parseInt(accountId);//Convert to integer for BDD
            compteName = accountName;
     
     
            /** Spinner get year and month **/ 
            spinnerYear = (Spinner) findViewById(R.id.yearsss);
            final Spinner spinnerMonth = (Spinner) findViewById(R.id.month);
     
            Calendar spinCal = Calendar.getInstance(Locale.getDefault());
            int intYearNow = spinCal.get(Calendar.YEAR);
            int intMonthNow = spinCal.get(Calendar.MONTH);
     
            spinnerArrayYear = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item);	    
            spinnerArrayYear.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            ArrayAdapter<String> spinnerArrayMonth = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item);	    
            spinnerArrayMonth.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
     
            FluxDAO FluxDAOdate = new FluxDAO(this);
            FluxDAOdate.open();
            Cursor cursorDate = FluxDAOdate.mDb.rawQuery("SELECT DISTINCT compteid, IFNULL(MIN(date1), -1) FROM " + FluxDAO.FLUX_TABLE_NAME + " WHERE " + FluxDAO.FLUX_COMPTE_ID + " == " + compteId, null);
    	    startManagingCursor(cursorDate);
     
    	    if (!cursorDate.moveToFirst() || cursorDate.moveToFirst() && cursorDate.getLong(1) == -1){
    	    	String strYear = String.valueOf(spinCal.get(Calendar.YEAR));
    	        String hhh = sdf.format(spinCal.get(Calendar.MONTH));
    	    	spinnerArrayYear.add(strYear);
    	    	spinnerArrayMonth.add(hhh);
                Toast.makeText(getBaseContext(),"Pas de Résultat ! dates en cours", Toast.LENGTH_SHORT).show();
    	    }
    	    else {
    	    	for(cursorDate.moveToFirst(); !cursorDate.isAfterLast(); cursorDate.moveToNext()) {
    	    		String dateMinStr = cursorDate.getString(1);
    	    		Long dateMinLong = Long.valueOf(dateMinStr);
    	    		Calendar calendarMin = Calendar.getInstance(Locale.getDefault());
    	    		calendarMin.setTimeInMillis(dateMinLong);
    	    		int intYearMin = calendarMin.get(Calendar.YEAR);
    	    		int intMonthMin = calendarMin.get(Calendar.MONTH);
     
    	    		for(int i=intYearNow; i>=intYearMin; i--){
    	    			String Strval = String.valueOf(i);
    	    			spinnerArrayYear.add(Strval);
    	    			if(spinnerYear.getSelectedItem() == null){
    	    				Toast.makeText(this,"Spinner NULL", Toast.LENGTH_SHORT).show();
    	    			}
    	    			//String gggg = spinnerYear.getSelectedItem().toString();
    		            //Toast.makeText(this," aff :" + yearstr, Toast.LENGTH_SHORT).show();
    	    		}
    	    		// utiliser between 01/2014 au 12/2014
    	    		/** Le 01/01/N -> N = Spinner selected **/
    	            Calendar calendarMinDateYear = Calendar.getInstance();
    	            //String yearstr = spinnerYear.getSelectedItem().toString();
    	            //Toast.makeText(this," aff :" + yearstr, Toast.LENGTH_SHORT).show();
    	            //int yearInt = Integer.valueOf(yearstr);
    	            /*calendarMinDateYear.set(Calendar.YEAR, year);
    	            calendarMinDateYear.set(Calendar.MONTH, Calendar.JANUARY);
    	            calendarMinDateYear.set(Calendar.DAY_OF_MONTH, 1);
    	            calendarMinDateYear.set(Calendar.HOUR_OF_DAY, 0);
    	            calendarMinDateYear.set(Calendar.MINUTE, 0);
    	            calendarMinDateYear.set(Calendar.SECOND, 0);
    	        	Date minDate = calendarMinDateYear.getTime();
    	        	/** Le 31/12/N N = Spinner selected **/
    	        	/*calendarMinDateYear.set(Calendar.MONTH, Calendar.DECEMBER);
    	        	calendarMinDateYear.set(Calendar.DAY_OF_MONTH, 31);
    	        	Date maxDate = calendarMinDateYear.getTime();*/
     
    	    		/*Cursor cursorMonthMin = FluxDAOdate.mDb.rawQuery("SELECT DISTINCT compteid, MIN(date1)" +
    	    				" FROM " + FluxDAO.FLUX_TABLE_NAME + 
    	    				" WHERE " + FluxDAO.FLUX_COMPTE_ID + " == " + compteId +
    	    				" AND " + FluxDAO.FLUX_DATE1 + " >= ? " +
    	    				" AND " + FluxDAO.FLUX_DATE1 + " <= ? " 
    	    				, new String[] { Long.toString(minDate.getTime()), Long.toString(maxDate.getTime()) });
    	    	    startManagingCursor(cursorMonthMin);*/
     
    	    	    //Toast.makeText(this," aff :" + String.valueOf(year), Toast.LENGTH_SHORT).show();
           			}
    	    }
    	    FluxDAOdate.close();
    	    cursorDate.close();
     
    	    spinnerYear.setAdapter(spinnerArrayYear);

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 40
    Par défaut
    Je viens de trouver pourquoi le spinner était bien rempli et pourquoi quand je lance le programme j'ai une erreur "nullPointerException" dès que j'utilise la fonction getSelectedItem().

    Ca pourra peut être servir à d'autres :

    Tout simplement parce que getSelectedItem() ne peut être utilisé qu'après "spinnerYear.setAdapter(spinnerArrayYear)".

  3. #3
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Et la raison dessous :
    getSelectedItem demande un item choisi.
    L'Adapter fourni les données.
    getSelectedItem retournera donc null si aucun Adapter n'a été fourni avant.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Valider si mon champs est null, pour ensuite faire recherche
    Par asvin dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 17/01/2012, 21h15
  2. MavenProject project vaut null
    Par TekFanatiX dans le forum Maven
    Réponses: 1
    Dernier message: 11/06/2009, 13h43
  3. Test si une structure in_addr vaut NULL
    Par elbarjo dans le forum Linux
    Réponses: 2
    Dernier message: 11/02/2009, 19h39
  4. sqldatasource avec paramètre qui vaut null
    Par aurelien.tournier dans le forum ASP.NET
    Réponses: 4
    Dernier message: 17/01/2008, 11h56
  5. [C#][2.0] Identifiant de mon contrôle hérité "null"
    Par Damien R dans le forum ASP.NET
    Réponses: 3
    Dernier message: 20/11/2006, 10h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo