JavascriptProva

domenica 21 febbraio 2016

Altro errore

Il passaggio alla schermata ImagePick viene sempre fatto con il passaggio della categoria iniziale.
Vediamo bene il codice che chiama questa "schermata".
  mainLayout.setOnLongClickListener(new View.OnLongClickListener() {
   
   @Override
   public boolean onLongClick(View v) {
    if(settingMode){
     Intent intent=new Intent(MainActivity.this,ImagePick.class);
     intent.putExtra("Categoria", currentCat);
     intent.putExtra("CoordX", mlX);
     intent.putExtra("CoordY", mlY);
     startActivity(intent);
    }
    return true;
   }
  });
Trasmette alla schermata (activity) ImagePick il valore di currentCat, la categoria corrente, che quando si parte dalla schermata iniziale è "iniziale", e sta bene, ma che probabilmente resta "iniziale" anche quando si verifica il cambiamento apparente di schermata con lo scarico e il carico di immagini dal database.
Verifichiamo se con il cambio di schermata la categoria corrente resta sempre la stessa.
Prendiamo il codice che cambia la schermata.
.....
.....
case MotionEvent.ACTION_UP:
    if(settingMode){
     TextView et=(TextView)((ViewGroup)v).getChildAt(numEtichetta);
     TextView cat=(TextView)((ViewGroup)v).getChildAt(numCategoria);
     helper.Update(et.getText().toString(), cat.getText().toString(),v.getLeft(), v.getTop());
    }
    else{
     TextView t=(TextView) ((ViewGroup)v).getChildAt(numTipo);
     if(t.getText().equals("categoria")){
      String s=(String) ((TextView)((ViewGroup)v).getChildAt(numEtichetta)).getText();
      mainLayout.removeAllViews();
      try{
       leggiDaDatabase(s);
       currentCat=s;
      }catch(Exception e){}
     }
     
      
     
    }
Traduzione della parte successiva a else:
Prendi una TextView t e identificala con la TextView che rappresenta il Tipo dell'immagine.
Se il suo testo è "categoria", allora: prendi una stringa s e dalle il valore dell'etichetta dell'immagine.
Togli tutte le immagini dalla schermata.
Se ci riesci, leggi dal database le immagini che hanno come tipo la stringa s e imposta la categoria corrente al valore dell'etichetta.
E forse ho individuato il "topo"! Io dico "se ci riesci leggi dal database E cambia la categoria corrente". Ora, se il database è vuoto, l'operazione di lettura fallisce e l'eccezione viene gestita senza messaggio di errore, ma dal momento che nel Try...catch è compresa anche l'istruzione di cambiare la categoria corrente, questo cambio non viene fatto, mentre le immagini sono cancellate passando così virtualmente alla seconda schermata.
Quindi mi trovo su una seconda schermata, vuota perché non vi sono salvate immagini, ma con la categoria di partenza, in quanto il cambio di categoria è stato "trascinato nel fallimento della operazione di lettura dal database".
Provvedo e provo...

Nessun commento:

Posta un commento