Próbuję użyć fragmentów do zbudowania mojej pierwszej właściwej aplikacji na Androida. Mam główny xml. który składa się z dwóch pionowych fragmentów, górne fragmenty składają się z zaledwie dwóch widoków tekstowych. Pierwszy z nich zawiera tekst statyczny, a drugi zawiera wartość, którą ostatecznie otrzymam dynamicznie z SQL.Android: Jak zaktualizować tekst w Fragmentie
jeśli mogę umieścić to moja MainActivity.java to szczęśliwie aktualizuje wartość TextView w moim pierwszym Fragment:
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");
}
Mam dwóch fragmentów plików XML i Java, aby wspierać się wzajemnie tak chcę umieścić ustawienie tego pola na język Java, który obsługuje fragment, a nie java, które jest dla głównego obiektu.
Kiedy umieścić go we fragmencie wygląda to tak: -
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");
}
Ale jeśli mogę to zrobić pojawia się błąd na linii TextView:
„Metoda findViewById (int) jest nieokreślony dla typu FragmentMainTop "
Dlaczego więc nie zna tej metody? Mam ctl/shift/o, więc wiem, że mam wszystkie właściwe produkty importowane. Nie chcę w końcu umieszczać całego mojego kodu w MainActivity, ponieważ jeśli chcę użyć Fragmentu w innym działaniu, będę musiał powtórzyć cały kod.
Odniesienia są zwracane pomyślnie, nawet jeśli findViewByID na działanie zwrócone przez fragment.getActivity(). Jednak aktualizacja widoków wciąż nie działa –