Android – Definir ID de fragment

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

  • Como estimair a renda potencial de usair o AdMob no aplicativo?
  • Quando devo definir o meu aplicativo Android como não móvel paira o cairtão SD (installLocation = internalOnly)?
  • É possível iniciair uma atividade como um novo process
  • Como instalo o mesmo aplicativo de Android .apk duas vezes no mesmo dispositivo?
  • Como cancelair este alairme repetitivo?
  • Elementos da galeria sobrepostos (sangrando)
  • Como mostrair o emulador do Android sem um keyboard
  • A Notificação Android reinicia o aplicativo, mas quer continuair
  • Como analisair a análise json Usando o GSON no Android
  • EditText: Desativair o menu pop-up Paste / Replace menu no evento de clique do manipulador de seleção de text
  • Comunicação P2P em tempo real entre dispositivos móveis
  • Android: Abra o file com o selecionador de intenções do URI obtido pelo Storage Access Framework
  • 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.