Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Remover Fragments de uma Activity

Numa determinada activity no meu app, faço uma busca com um onTextChanged() e trago 3 listas de resultados diferentes. Cada lista é apresentada num Fragment diferente. Porém quando eu apago o último caractere do campo de busca, gostaria de remover todos os fragments, e mostrar apenas a activity vazia, apenas com o campo de pesquisa. Já tentei várias formas de remover os fragments, mas nenhuma delas funcionou. Alguém sabe como eu consigo fazer isso?

9 respostas
solução!

Oi Lucas, tudo bem ?

Remover os fragments acho um pouco dificil.

Acredito que seja mais jogo talvez você zerar a lista, isso vai fazer com que não seja exibido nada.

Para remover, você tem que fazer uma substituição novamente.

O problema é que pra cada lista (e pra cada Fragment) eu tenho um título acima da lista. Então quando não traz nada eu queria que o título sumisse também.

Está feito dessa forma:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">

    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/list_lyrics_text"
            android:textColor="@color/colorPrimary"
            android:layout_gravity="left"
            android:textSize="20sp"/>

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/activity_search_lyrics_result"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:cardElevation="5dp"
        app:cardUseCompatPadding="true">

        <ListView
            android:id="@+id/searched_lyrics_list"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>

    </android.support.v7.widget.CardView>
</LinearLayout>

Tem alguma forma de eu substituir uma lista cheia de registros, por uma vazia, e fazer desaparecer o TextView? Existe alguma outra forma de estruturar a tela que me permita fazer isso?

A melhor forma como eu disse é você colocar então um fragment vazio no lugar, ou algum anterior a busca.

Mas como eu faço pra colocar um Fragment vazio?

Tentei fazer isso dessa forma:

FragmentTransaction ft = manager.beginTransaction(); ft.replace(R.id.id_do_frame, null);

Mas não deu certo

Pode passar assim :

FragmentTransaction ft = manager.beginTransaction(); ft.replace(R.id.id_do_frame, new Fragment());

Fiz essa alteração, mas o app dá erro.

Qual erro ?

Desculpa, não me lembro mais qual erro aconteceu, mas esse erro eu consegui resolver depois. O problema é que, da forma como está feito, quando a pequisa dá resultado apenas pra segunda e/ou terceira lista, fica um espaço em branco onde ficaria a primeira lista(caso ela trouxesse resultado). Visualmente o resultado não fica muito bom

Resolvi o problema usando ExpandableListView. Se uma das listas não traz resultado, é só fazer um if e não adicionar a lista e o seu header no HashMap