Em um aplicativo Android, estou carregando dados de um Db em um TableView
dentro de a Fragment
. Mas quando eu recarrego o Fragment
ele exibe os dados anteriores. Posso preencher novamente o Fragment
com dados atuais em vez de dados anteriores?
android
android-fragments
Samantha Withanage
fonte
fonte
Respostas:
Eu acho que você deseja atualizar o conteúdo do fragmento na atualização do banco de dados
Em caso afirmativo, destaque o fragmento e reconecte-o
Your_Fragment_TAG é o nome que você deu ao seu fragmento quando o criou
Este código é para a biblioteca de suporte.
Se você não oferece suporte a dispositivos mais antigos, basta usar getFragmentManager em vez de getSupportFragmentManager
[EDITAR]
Este método requer que o Fragment tenha uma tag.
Caso você não o tenha, o método de @Hammer é o que você precisa.
fonte
Isso irá atualizar o fragmento atual:
fonte
Caso você não tenha a tag de fragmento, o código a seguir funciona bem para mim.
fonte
getActivity()
na minha atividade. Devo usarActivity.this...
?você pode atualizar seu fragmento quando estiver visível para o usuário, basta adicionar este código em seu fragmento. Isso irá atualizar seu fragmento quando estiver visível.
fonte
Para atualizar o fragmento a resposta aceita não funcionará no Nougat e na versão superior. Para fazer funcionar em todos os sistemas operacionais, você pode fazer o seguinte.
fonte
Você não pode recarregar o fragmento enquanto ele estiver anexado a uma atividade, onde você obtém a
Fragment Already Added
exceção " ".Portanto, o fragmento deve ser primeiro destacado de sua atividade e depois anexado. Tudo pode ser feito usando a API fluente em uma linha:
Atualização: para incorporar as alterações feitas na API 26 e superior:
Para obter mais descrições da atualização, consulte https://stackoverflow.com/a/51327440/4514796
fonte
isso só funcionará se você usar
FragmentManager
para inicializar o fragmento. Se você tiver<fragment ... />
em XML, não chamará deonCreateView
novo. Perdi meus 30 minutos para descobrir isso.fonte
Aqui está o que eu fiz e funcionou para mim, eu uso o firebase e quando o usuário está logado, eu queria atualizar o fragmento atual primeiro, você precisará solicitar o contexto da atividade porque o fragmento não tem uma maneira de obter contexto, a menos que você o defina em Activity ou context aqui é o código que usei e trabalhei na linguagem kotlin, acho que você poderia usar o mesmo na classe java
fonte
Use um
ContentProvider
e carregue seus dados usando um 'CursorLoader'. Com esta arquitetura, seus dados serão recarregados automaticamente nas alterações do banco de dados. Use estruturas de terceiros para o seuContentProvider
- você realmente não quer implementá-lo sozinho ...fonte
Eu tive o mesmo problema, mas nenhuma das opções acima funcionou para o meu. ou houve um problema de backstack (depois de carregar quando o usuário pressionou de volta, ele iria para o mesmo fragmento novamente) ou ele não chamou o
onCreaetView
finalmente eu fiz isso:
bom ponto é que você não precisa da tag ou id do fragmento também. se você quiser recarregar
fonte
Faça uso do método onResume ... tanto na atividade do fragmento quanto na atividade que contém o fragmento.
fonte
GeneralInfo
é minha aula de fragmentoGeneralInfo.java
Eu o coloquei como um método na classe de fragmento:
fonte
Por exemplo, com TabLayout: basta implementar OnTabSelectedListener. Para recarregar a página, você pode usar implementar SwipeRefreshLayout.OnRefreshListener ie
public class YourFragment extends Fragment implements SwipeRefreshLayout.OnRefreshListener {
o método onRefresh () será @Override da interface, ou seja:
Aqui está o layout:
Código em sua atividade
TabLayout tabLayout = (TabLayout) findViewById (R.id.tablayout); tabLayout.setupWithViewPager (viewPager);
fonte
Escreva viewpagerAdapter.notifyDataSetChanged (); em onResume () em MainActivity. Boa sorte :)
fonte
Caminho mais fácil
faça um método estático público contendo viewpager.setAdapter
tornar o adaptador e o visualizador estáticos
ligue para qualquer lugar, qualquer atividade, qualquer fragmento.
fonte