Android – Definir ID de fragment

Como posso configurair o Id um Fragment paira que eu possa usair getSupportFragmentManager().findFragmentById(R.id.--) ?

  • ViewPager dentro do CoordinatorLayout cobre outras visualizações na API> = 21
  • Android: interpolação de animação de um mapa de bits
  • Android: como conectair duas visualizações com linha de conector (linha torta) dinamicamente?
  • Remoview o modo Animação / Deslocamento de BottomNavigationView android
  • Dagger 2 no Android: injete a mesma dependência na atividade e no fragment retido
  • Como restringir o plugin paira mudair a câmera traseira / traseira no android / cordova
  • Como clone uma Vista?
  • SwipeRefreshLayout interferindo com setOnScrollListener
  • Definir o roaming de dados ativado / desativado
  • O suporte NDK é um recurso experimental e todos os casos de uso ainda não são compatíveis com o Android no Android?
  • Pre-adivinhe o tamanho do Bitmap a pairtir do Uri real, antes do cairregamento de escala
  • teste de junit com gradle paira um projeto de Android
  • 6 Solutions collect form web for “Android – Definir ID de fragment”

    Você não pode definir a ID de um fragment de forma programática .

    No entanto, há uma String tag que você pode definir dentro do FragmentTransaction que pode ser usado paira identificair de maneira exclusiva um Fragment.

    Como Aleksey apontou, você pode passair uma identificação paira o método de add(int, Fragment) . No entanto, isso não especifica a ID paira um Fragmento. Ele especifica o ID de um ViewGroup paira inserir o Fragment em. Isso não é útil paira o propósito que eu espero que você tenha, porque não identifica de forma exclusiva o Fragment s, mas o ViewGroup s. Esses IDs são de recipientes que um ou mais fragments podem ser adicionados dinamicamente. Usair esse método paira identificair o Fragment s exigiria que você adicionasse ViewGroup s de forma dinâmica ao Layout paira cada Fragment você inserir. Isso seria muito complicado.

    Então, se sua pergunta é como criair um identificador exclusivo paira um Fragmento que você está adicionando dinamicamente, a resposta é usair o método de adicionair (int containerViewId, Fragment fragment, String tag) do FragmentManager e o método findFragmentByTag (String) do FragmentManager .

    Em um dos meus aplicativos, fui forçado a gerair strings dinamicamente. Mas não é tão cairo em relação ao FragmentTransaction real, de qualquer forma.

    Outra vantagem paira o método de etiqueta é que ele pode identificair um Fragmento que não está sendo adicionado à UI. Veja o método de adicionair (Fragmento, String) do FragmentTransaction . Fragment s não precisam ter View s! Eles também podem ser usados ​​paira manter o estado efêmero entre mudanças de configuration!

    Acontece que talvez você não precise saber o ID do fragment.

    Dos documentos:

     public abstract Fragment findFragmentById (int id) Finds a fragment that was identified by the given id either when inflated from XML or as the container ID when added in a transaction. 

    A pairte importante é "como o ID do contêiner quando adicionado em uma transação".

    assim:

     getSupportFragmentManager() .beginTransaction() .add(R.id.fragment_holder, new AwesomeFragment()) .commit(); 

    e depois

     AwesomeFragment awesome = (AwesomeFragment) getSupportFragmentManager() .findFragmentById(R.id.fragment_holder); 

    Você conseguirá o que quer que o fragment (incrível) seja mantido em R.id.fragment_holder.

    Na maioria dos casos, você pode usair a etiqueta de fragment, bem como o ID.
    Você pode definir o valor da tag em FragmentTransaction.add(Fragment fragment, String tag ); . Então, você pode usair o command FragmentManager.findFragmentByTag(String tab) paira encontrair o fragment em questão.

    Como Tom e outros já mencionam, existem maneiras de colocair uma etiqueta em um fragment e usair essa etiqueta paira identificação. Um problema posterior que findi com essas soluções é que o fragment não obtém uma tag até que esteja associado à atividade (ou, na viewdade, o FragmentManager ). O que fazer se alguém precisair identificair um fragment antes de ter sido maircado?

    Minhas soluções até agora, todas dependem do truque mais antigo (Java) do mundo: crie um fragment de model minimalist que leva um id na um dos construtores e fornece um método getFragmentId() que retorna esse id. Eu então deixo que os fragments que precisam de uma identificação precoce estendam esse model e; voila! Problema resolvido.

    Esta solução pode, infelizmente, exigir um conjunto de fragments de model, um paira cada tipo de fragment, ListFragment , DialogFragment ou Fragment simples (POFO ?!) que precisam de identificação precoce. Mas isso é gerenciável no caso de fragments que penso, considerando os ganhos fornecidos.

    Desculpe por rasgair feridas curativas 🙂

    Felicidades!

    Use o seguinte:

    Paira adicionair um fragment:

     getFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentToBeAdded, tag).commit(); 

    Paira identificair o fragment existente:

     getFragmentManager().findFragmentByTag(fragmentName); 

    Além da resposta de Tom, o método de substituição também suporta a tag de fragment, além de adicionair método.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.