JavascriptProva

martedì 6 settembre 2016

J-Communicator: salvataggio nel database delle coordinate dell'immagine.

Ora mi devo occupare del recupero di immagini dal database.
Vediamo se nell'intent con cui viene chiamata ImagePick si trasmette la posizione, e se il Long Click su mainLayout contiene dati sulla posizione del click stesso...

Ecco il codice del long click su mainLayout:
  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;
   }
  });
Con la chiamata di ImagePick vengono trasmessi mlX e mlY.
Queste sono variabili dichiarate inizialmente come variabili di istanza e inizializzate all'evento onTouch del mainLayout, perché onLongClick non contiene informazioni sulla posizione.

Conviene fare la stessa cosa:
Creare un onTouchListener in cui vengono inizializzate le variabili mlX e mlY dichiarate fra le variabili di istanza all'inizio, quindi inserire questi dati come putExtra in mainLayout.onLongClick.
Ecco mainLayout.setOnTouchListener:
        mainLayout.setOnTouchListener(new View.OnTouchListener(){

            @Override
            public boolean onTouch(View view, MotionEvent event) {
                mlX=(int)event.getX();
                mlY=(int)event.getY();

                return true;
            }
        });
E quindi inseriamo questi dati come putExtra in mainLayout.setOnLongClickListener:
        //il LONG CLICK sul MAINLAYOUT per la visualizzazione di ImagePick
        mainLayout.setOnLongClickListener(new View.OnLongClickListener(){

            @Override
            public boolean onLongClick(View view) {
                if(!settingMode) return false;
                Intent intent=new Intent(getApplicationContext(),ImagePick.class);
                intent.putExtra("Categoria","iniziale");
                intent.putExtra("coordX",mlX);
                intent.putExtra("coordY",mlY);
                startActivity(intent);
                return true;
            }
        });
Non si apre più ImagePick in risposta al LongTouch su mainLayout.
Immagino che sia perché su onTouch ho impostato return true, dal momento che nella versione precedente era impostato su return false.
Correggo:
        //MAINLAYOUT.ONTOUCHLISTENER
        mainLayout.setOnTouchListener(new View.OnTouchListener(){

            @Override
            public boolean onTouch(View view, MotionEvent event) {
                mlX=(int)event.getX();
                mlY=(int)event.getY();

                return false;
            }
        });
E infatti adesso funziona!
Vediamo se salva nel database le coordinate dell'immagine...

Continua a non salvare, ma mi rendo conto che la parte "key" del dato messo in putExtra è scritta in maiuscolo sul codice di ImagePick e in minuscolo sul codice di MainActivity. Scritto in maiuscolo da ambedue le parti, il codice funziona, e salva nel database le coordinate.
Anche per quanto riguarda il dato "Categoria" ho notato che queste keys sono case-sensitive.

Nessun commento:

Posta un commento