"Go back" kommando

Discussion in 'Frågor, support och diskussion' started by Merdon, Oct 9, 2010.

  1. Merdon

    Merdon Youth Droid Medlem

    Joined:
    Jan 22, 2010
    Messages:
    153
    Likes Received:
    11

    MINA ENHETER

    Hej, tror att jag har en ganska enkel fråga men jag har inte lyckats hitta något svar på frågan själv. Jag vill helt enkelt efter en viss tid eller då jag trycker på en knapp utföra samma aktivitet som när man trycker på "bakåt knappen" på mobilen, dvs, gå till förra aktivitets fönstret. Vill inte ladda om sidan då den tar tid att ladda. Vill hellre bara anropa samma funktionalitet som "bakåt knappen"

    Typ någonting sånt här.
    public void onClick(View v) {
    switch (v.getId()){
    case R.id.button_goBack:
    // Kod för att gå till förra rutan
    }}


    Hur ska jag kunna göra detta på lättast sätt.
     
  2. yrara

    yrara Teen Droid Medlem

    Joined:
    Sep 30, 2009
    Messages:
    428
    Likes Received:
    8

    MINA ENHETER

    finish() :-)
     
  3. Merdon

    Merdon Youth Droid Medlem

    Joined:
    Jan 22, 2010
    Messages:
    153
    Likes Received:
    11

    MINA ENHETER

    Tack för svaret, men de löste inte riktigt problemet. När ja anropar finish() kommer jag tillbaks till första rutan i programmet. Jag vill bara gå tillbaks till förra rutan, typ döda activityn man är på så man hoppar tillbaks
     
  4. b.lindahl

    b.lindahl Teen Droid Medlem

    Joined:
    Aug 20, 2009
    Messages:
    350
    Likes Received:
    9

    MINA ENHETER

    När du trycker på back-knappen avslutas den aktuella aktiviteten så det yrara säger fungerar. Frågan är vad du syftar på med rutor i ditt program, är det verkligen aktiviteter du startat? Du får nog utveckla vad du gör i din kod lite, kanske klistra in lite mer kodrader här så vi förstår vad som gått snett.
     
  5. Merdon

    Merdon Youth Droid Medlem

    Joined:
    Jan 22, 2010
    Messages:
    153
    Likes Received:
    11

    MINA ENHETER

    Sry, det är jag som är lite ny i android och använder mig inte direkt av korrekt termer.

    (A)Jag startar i classen Appstart som är main-klassen.

    Därifrån startar jag en ny aktivitet med
    (B) Intent i = new Intent(this, ShowResult.class);
    i.putExtra(ShowResult.INFO, httpAddress);
    startActivity(i);


    Sedan när jag är i (B) startar jag en ny aktivitet av samma typ,
    (ShowResult), fast med andra parametrar.
    (C) Intent i = new Intent(this, ShowResult.class);
    i.putExtra(ShowResult.LOADFROMHTTP, false);
    startActivity(i);


    Nu vill jag trycka på en knapp som tar mig tillbaka till B. Fast när jag anropar finish() kommer jag tillbaka till A. Testa att köra finish() på ett annat program och då hoppar jag tillbaks precis som jag vill, till förra aktiviteten. Kan det bero på att jag startar 2 aktiviteter av samma class? Både B och C använder ShowResult.class
     
  6. rogermadsen

    rogermadsen Kid Droid Medlem

    Joined:
    May 29, 2010
    Messages:
    35
    Likes Received:
    2

    MINA ENHETER

    Default-beetendet i Android är att aktiviteter återanvänds. D.v.s skickar du ett intent till en aktivitet som redan är "igång" så tar den bara och flyttar upp den till toppen.

    Altså, när du skickar dit tredje intent så läggs det inte en ny aktivitet ovan på utan samma aktivitet används igen och det är därför du kommer tillbaka till första aktiviteten när du kör finnish().

    Man kan däremot sätta lite flaggor på intentet som gör att en ny aktivitet startas. Sök efter "NEW_TASK" på den här sidan så förstår du nog hur det funkar.

    http://blog.akquinet.de/2010/04/15/android-activites-and-tasks-series-intent-flags/

    Man kan även sätta nånting i manifest-filen så att aktiviteten alltid startas i en ny task men det kan jag inte i huvet nu.
     
  7. Merdon

    Merdon Youth Droid Medlem

    Joined:
    Jan 22, 2010
    Messages:
    153
    Likes Received:
    11

    MINA ENHETER

    Hm... får det inte att fungera trots flaggorna. Har testat att använda både FLAG_ACTIVITY_NEW_TASK och/eller FLAG_ACTIVITY_MULTIPLE_TASK. Men det verkar inte fungera. Funderar på att strukturera om lite så kanske jag slipper det här problemet.

    Fresten går det att på något sätt skicka ArrayList(String[]) med i.putExtra.
    Hittar bara att man kan ta ut ArrayList(String) med getIntent().getStringArrayListExtra().
    Då skulle jag kunna göra om lite utan att strukturera om allt för mycke.

    Tackar verkligen för hjälpen jag fått hittils
     
  8. ozp

    ozp Teen Droid Medlem

    Joined:
    May 6, 2010
    Messages:
    250
    Likes Received:
    31

    MINA ENHETER

    Den borde gå att skicka som en parcable. Annars går det att ta ut en string[], skicka den och sedan skapa om ArrayList från arrayn på andra sidan.
     
  9. yrara

    yrara Teen Droid Medlem

    Joined:
    Sep 30, 2009
    Messages:
    428
    Likes Received:
    8

    MINA ENHETER

    Det går att skicka som parcelable, men tekniken skiljer sig under huven inte i stort från att göra om listan till en string[].

    Till originalfrågan: Merdon, vill du klistra in hela ditt manifest, samt all relevant kod för där du öppnar dina olika activities? Det verkar som att du öppnar någon activity med CLEAR_TOP, eller redan kör finish efter en startactivity.