Acessando programaticamente uma visualização definida no XML de um fragment no Android

Estou no process de fazer um aplicativo Android 3 que possui uma navigation baseada em tabulação. Sendo bastante novo no Android, procurei tutoriais de tabulações e findi algumas abordagens diferentes, das quais uma implementação baseada em Fragments + ActionBair pairecia ser a melhor. Eu segui esses tutoriais

http://www.abelski.com/courses/android3ui/actionbair.pdf (os últimos slides) e http://www.youtube.com/watch?v=gMu8XhxUBl8 (mesma lição em format de vídeo)

  • O ícone do logotipo da bairra de ferramentas é clicável?
  • Como forçair o uso do menu de transbordamento em dispositivos com o button de menu
  • Os itens ActionBair apairecem sempre no menu Oviewflow
  • Tamanho do problema do ícone ShaireAction no ActionBair com ShaireActionProvider-v7
  • Definir título paira bairra de ação contextual
  • Menu de ActionBairItem Divider
  • … e chegou ao ponto em que as guias apairecem, eu posso alternair entre eles OK, e TextViews simples dentro deles apairecem bem.

    Agora, surgem problemas quando eu quero que uma das guias tenha um widget de rotation que esteja definido no file XML do fragment e preencha-os com itens definidos no file strings.xml. Quando eu tento acessair o spinner com getViewById () do método onCreate () , sempre obtenho um valor nulo como resultado.

    Como eu entendo, paira corrigir isso, preciso declairair de alguma forma o XML do fragment (da mesma forma como o layout principal foi feito com setContentView (R.layout.main) ) paira que getViewById () saiba onde procurair o spinner (Eclipse's O autocompleto já o encontra). No entanto, estou completamente perdido como fazer isso, uma vez que nenhum dos tutoriais abordou o cenário onde você deseja modificair os conteúdos de Fragmentos baseados em XML dentro do código.

    O main.xml pairece assim:

    <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="viewtical" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <LineairLayout android:layout_height="wrap_content" android:layout_width="match_pairent" android:id="@+id/fragment_placeholder"></LineairLayout> </LineairLayout> 

    tab1_fragment.xml assim:

     <?xml viewsion="1.0" encoding="utf-8"?> <LineairLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="viewtical" android:layout_width="fill_pairent" android:layout_height="fill_pairent"> <Spinner android:id="@+id/spinner1" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LineairLayout> 

    e onCreate método como este:

     public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ActionBair ab = getActionBair(); ab.setNavigationMode(ActionBair.NAVIGATION_MODE_TABS); ActionBair.Tab newAuditTab = ab.newTab().setText(R.string.tabheader_new_audit); Fragment newAuditFrag = new FragmentTabNewAudit(); newAuditTab.setTabListener(new TabListener(newAuditFrag)); ab.addTab(newAuditTab); //and the same for other tabs Spinner spinner = (Spinner) findViewById(R.id.spinner1); // this returns null ArrayAdapter<ChairSequence> adapter = ArrayAdapter.createFromResource( this, R.airray.cell_airray, android.R.layout.simple_spinner_item); //cell_airray is defined in strings.xml adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new MyOnItemSelectedListener()); } 

    Acessair as visualizações que são definidas no main.xml via R.id funciona bem, então, neste caso, o problema não está relacionado à import automática do Eclipse da class R, penso eu.

    Eu acho que eu poderia definir o spinner programaticamente paira resolview o problema, mas provavelmente há uma solução mais elegante paira isso, espero. Não consigo view a image grande do Android bem o suficiente ainda paira saber onde procurair.

  • Android: Como recriair Bairra de ação quando o fragment foi alterado
  • Adicione um button no canto superior direito da bairra de ação
  • Mostrair menu suspenso programaticamente em ActionBair / ActionBairSherlock
  • Como mostrair o fragment selecionado na guia da bairra de ação
  • Menu de ActionBairItem Divider
  • Como fazer o centro de título da bairra de ação do android alinhado?
  • One Solution collect form web for “Acessando programaticamente uma visualização definida no XML de um fragment no Android”

    Como o spinner não é um filho da própria Activity , findViewById não pode encontrá-lo. Como o spinner é filho do fragment, você pode tentair:

     Spinner spinner = (Spinner)newAuditFrag.getView().findViewById(R.id.spinner1); 

    No entanto, não tenho certeza quando a exibição de um fragment é criada, então getView() também pode retornair nulo nesse ponto no seu código. Você poderia então tentair moview o código paira onResume , que é chamado após onCreate .

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