Fragment erstellt Activity, nach super.onBackPressed() in Activity Fragment refresh

  • Antworten:6
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 141

09.02.2015, 16:22:29 via Website

Hallo zusammen,

ich habe in meiner App drei Tabs. In einem wird eine Liste mit Elementen aus einer Datenbank angezeigt. Bei klick auf ein Item wird eine neue Activity per Intent geladen. In dieser Activity sortiere ich in der Datenbank die Elemente (die im Tab in der Liste stehen) neu.

Zudem habe ich onBackPressed überschrieben und beende die Activity am Ende von onBackPressed mit super.onBackPressed(). Jetzt verschwindet diese Activity und die gewünschte Tab-Ansicht kommt wieder zum Vorschein. Allerdings refreshed sich der view nicht. Erst nach nochmaligem antippen werden die Daten neu geladen.

Mein Tab-Listener sagt mir, dass nach Beenden der Activity weder onTabSelected, onTabUnselected noch onTabReselected aufgerufen wurde. Ich möchte aber, dass nach Beenden der Activity der Tab refreshed wird. Wie ließe sich das am besten umsetzen?

Danke für Hilfe :)

— geändert am 09.02.2015, 16:23:21

Antworten
Pascal P.
  • Mod
  • Blogger
  • Forum-Beiträge: 10.182

09.02.2015, 16:39:47 via Website

Normalerweise benutzt man dafür in deiner TabActivity die onResume Methode der Superclass.
Diese wird ausgeführt wenn du weider in die aktivity reinkommst.

LG Pascal //It's not a bug, it's a feature. :) ;)

LitteM

Antworten
  • Forum-Beiträge: 141

09.02.2015, 17:16:32 via Website

Oh, an die hatte ich gar nicht mehr gedacht. Ist es dann erlaubt, dass ich den dort einfach so refreshe?

    @Override
public void onResume(){
    Log.e("MAIN_VIEW", "I AM BACK");
    ConversationTab.refresh();
    super.onResume();
}

In meiner Refresh-Methode habe ich dann folgendes geschrieben:

public static void refresh() {      
    DatabaseHandler dbHandler = new DatabaseHandler(RuntimeSettings
            .getInstance().getAppContext());
    recentList = dbHandler.getRecentContacts();
    dbHandler.close();
    adapter_contactList.notifyDataSetChanged();
    Log.e("CONVERSATION_TAB", "REFRESHED");
}

Allerdings tut sich bei adapter_contactList.notifyDataSetChanged(); rein gar nichts^^

==================================================================================

Edit: Habe das geändert, dann ging es. Hoffe ich habe jetzt keinen totalen Mist fabriziert^^

DatabaseHandler dbHandler = new DatabaseHandler(RuntimeSettings
                .getInstance().getAppContext());
        recentList = dbHandler.getRecentContacts();
        dbHandler.close();
        adapter_contactList = new Adapter_ContactList(
                runtimeSettings.getAppContext(),
                R.layout.contact_items_list_view, recentList);
        contacts.setAdapter(adapter_contactList);

— geändert am 09.02.2015, 17:33:03

Antworten
  • Forum-Beiträge: 1.904

09.02.2015, 17:38:29 via App

Jetzt erstellst du einen neuen Adapter. Du kannst aber einfach im alten die Daten neu setzen ohne einen komplett neue Adapter zu machen. Danach notifyDataSet...()
Mach am besten einen ganz normalen Setter oder nimm ein Interface.

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

LitteM

Antworten
  • Forum-Beiträge: 141

09.02.2015, 17:44:27 via Website

Kopf gegen Wand hau

Danke ;)
Habe jetzt nen setter gemacht. Manchmal meine ich, ich hätte vorher noch nie programmiert :D

Antworten
  • Forum-Beiträge: 1.904

09.02.2015, 19:32:09 via App

Gerne! 😀

Wenn dir mein Beitrag gefällt, kannst dich einfach mit dem 👍 "Danke"-Button auf der Website dieses Forums bedanken. 😀

Why Java? - Because I can't C#

Antworten
  • Forum-Beiträge: 141

09.02.2015, 19:44:37 via Website

So langsam läuft die ganze Sache runder. Freu mich schon darauf, den Messenger (hoffentlich bald) in die alpha-phase gehen zu lassen :)

Antworten

Empfohlene Artikel