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