Sto cercando di utilizzare i frammenti per creare la mia prima app Android appropriata. Ho un XML principale. che consiste di due frammenti verticali, i frammenti in alto sono costituiti da due soli TextView. Il primo di questi contiene il testo statico e il secondo contiene un valore che alla fine otterrò in modo dinamico da SQL.Android: Come aggiornare il mio testo Visualizza in un frammento
Se metto questo è il mio MainActivity.java allora aggiorna felicemente il valore del TextView nel mio primo frammento:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Set the Text to try this out
TextView t = (TextView)findViewById(R.id.viewItem);
t.setText("Text to Display");
}
Ho due XMLs frammento e Java per supportare ogni modo voglio mettere l'impostazione di questo campo in Java che supporta il frammento anziché il java che è per MainActivity.
quando ho messo nel frammento che assomiglia a questo: -
public class FragmentMainTop extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState){
// -- inflate the layout for this fragment
return inflater.inflate(R.layout.fragmentmt, container,false);
// Set the Text to try this out
TextView t = (TextView)findViewById(R.id.viewItem);
t.setText("Text to Display");
}
Ma se faccio questo io ottenere un errore sulla linea TextView:
"Il metodo findViewById (int) è indefinito per il tipo FragmentMainTop "
Quindi perché non conosce questo metodo? Ho ctl/shift/o quindi so di avere tutte le importazioni giuste. Non voglio finire per mettere tutto il mio codice in MainActivity perché se voglio usare il Frammento in un'altra attività dovrò ripetere tutto il codice.
I riferimenti vengono restituiti correttamente anche quando trovoViewByID sull'attività restituita da fragment.getActivity(). Ma l'aggiornamento dinamico delle viste continua a non funzionare –