Hjälp mig trolla! (Kommer inte på någon annan topic)

Diskussion i 'Frågor, support och diskussion' startad av DreamHawk, 14 jul 2011.

  1. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    För längesen hade jag en något fungerande "Anteckningsapp". Denna skulle jag nu vilja utveckla lite.

    För att editera en anteckning räcker det med att klicka på anteckningen för att editera. Detta vill jag ändra till Långtryck + "Ändra notering".

    Vet inte hur jag ska formulera mig, men hur kan jag trolla om

    Kod:
    [USER=4487]OvE[/USER]rride
        protected void onListItemClick(ListView l, View v, int position, long id) {
            super.onListItemClick(l, v, position, id);
            Intent i = new Intent(this, NoteEdit.class);
            i.putExtra(NotesDbAdapter.KEY_ROWID, id);
            startActivityForResult(i, ACTIVITY_EDIT);
    så den passar i

    Kod:
    public boolean onContextItemSelected(MenuItem item) {
            switch(item.getItemId()) {
             case EDIT_ID:
    
    .....
    
    Förstår ni? :/
     
  2. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

  3. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    I see...

    Men jag har såhär nu.
    Kod:
        [USER=4487]OvE[/USER]rride
        public void onCreateContextMenu(ContextMenu menu, View v,
                ContextMenuInfo menuInfo) {
            super.onCreateContextMenu(menu, v, menuInfo);
            menu.add(0, DELETE_ID, 0, R.string.menu_delete);
            menu.add(0, EDIT_ID, 0, R.string.edit_note);
        }
    
        [USER=4487]OvE[/USER]rride
        public boolean onContextItemSelected(MenuItem item) {
            switch(item.getItemId()) {
                case DELETE_ID:
                    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
                    mDbHelper.deleteNote(info.id);
                    fillData();
                    return true;
                case EDIT_ID:
    
                    .....
    
            }
    
    
    Hur kan jag bara, få den att öppna NoteEdit.class med rätt data genom switchen? :S
     
  4. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Varför använder du helt plötsligt menyn? Det har ju ingenting med långklick att göra?
     
  5. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Då formulerade jag mig fel ifrån början.

    Jag vill ju ha långtryck så jag får upp menyn (den ovan antar jag), och sedan trycka på Ändra anteckning (dvs EDIT_ID) ^^.

    Men du har säkert ett bättre sätt :/
     
  6. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Det är, enligt mig, bättre att du implementerar långklicket (där har du tillgång till positionen i listan) för att sedan visa en AlertDialog där du har "Ändra" eller dylikt.

    Om inte annat kan du efter långklicket spara positionen till en global variabel som du använder när du får upp menyn.
     
  7. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Nu har jag uhm... Nästan fått till det tror jag...
    När jag trycker på anteckningen får jag upp dialogen, och jag får välja på ja och nej.

    När jag väljer Ja är det tänkt då att den ska hoppa till NoteEdit.class, men får FC.

    Berörd kod
    Kod:
    .setPositiveButton("Ja", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                    	   
                    	   Intent i = new Intent(getBaseContext(), NoteEdit.class);
                           i.putExtra(NotesDbAdapter.KEY_ROWID, id);
                           startActivityForResult(i, ACTIVITY_EDIT);
                       }
    Hela koden...
    Kod:
        [USER=4487]OvE[/USER]rride
        protected void onListItemClick(ListView l, View v, int position, long id) {
        	super.onListItemClick(l, v, position, id);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Vill du ändra denna?")
                   .setCancelable(false)
                   .setPositiveButton("Ja", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                    	   
                    	   Intent i = new Intent(getBaseContext(), NoteEdit.class);
                           i.putExtra(NotesDbAdapter.KEY_ROWID, id);
                           startActivityForResult(i, ACTIVITY_EDIT);
                       }
                   })
                   .setNegativeButton("Nej", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.show();
        }
    Eftersom jag helt saknar kunskap, eller inte helt, men jag vet inte vad jag ska felsöka och vad som finns för lösningar :S.
     
  8. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Använd DDMS och använd LogCat, leta reda på den röda texten som kommer upp när detta händer så ska du kunna se varför du får en FC.

    Using DDMS | Android Developers
     
  9. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    [​IMG]

    Säger dessvärre inte mig så mycket :/
     
  10. ViLANDER

    ViLANDER Senior Droid Medlem

    Blev medlem:
    12 dec 2009
    Inlägg:
    1 594
    Mottagna gillanden:
    172

    MINA ENHETER

    Det är någonting i din andra aktivitet som inte är riktigt rätt. Du ska kunna hitta raden det sker på i den röda texten. Därefter ser man enkelt vad som gått snett.
     
  11. Adam2

    Adam2 Adult Droid Medlem

    Blev medlem:
    26 jul 2010
    Inlägg:
    732
    Mottagna gillanden:
    55

    MINA ENHETER

    Du verkar ha en databas query som returnerar en tom cursor. Du får nog exception när du försöker läsa innehållet i densamma.

    Sent from my Nexus S using Tapatalk
     
  12. DreamHawk

    DreamHawk Android Medlem

    Blev medlem:
    28 maj 2010
    Inlägg:
    6 064
    Mottagna gillanden:
    419
    Operatör:
    Tele2
    Telefon:
    iPhone 7

    MINA ENHETER

    Operatör:
    Tele2
    Telefon:
    iPhone 7
    ROM:
    IOS11
    Telefon 2:
    Google Galaxy Nexus
    ROM:
    LineageOS
    Blev nog lite missmatch när jag hade en "long id" och en "int id" på två olika ställen där..

    Kod:
        [USER=4487]OvE[/USER]rride
        protected void onListItemClick(ListView l, View v, int position, final long id) {
        	super.onListItemClick(l, v, position, id);
            AlertDialog.Builder builder = new AlertDialog.Builder(this);
            builder.setMessage("Vill du ändra denna?")
                   .setCancelable(false)
                   .setPositiveButton("Ja", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int iid) {
                    	   
                    	   Intent i = new Intent(getBaseContext(), NoteEdit.class);
                           i.putExtra(NotesDbAdapter.KEY_ROWID, id);
                           startActivityForResult(i, ACTIVITY_EDIT);
                       }
                   })
                   .setNegativeButton("Nej", new DialogInterface.OnClickListener() {
                       public void onClick(DialogInterface dialog, int id) {
                            dialog.cancel();
                       }
                   });
            AlertDialog alert = builder.show();
        }
    
    Lösningen blev att ändra den andra till "iid", och den översta ville eclipse göra till en final, lät den göra det , och det fungerade.