Android: Fragment nie może uzyskać aktywności
Mam działanie, które wykonuje transakcję fragmentacji
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
to działa dobrze. Teraz wiem, że w mojej aktywności dynamiczny ciąg, który muszę zastąpić w układzie, który mam w newFragment. Pomyślałem, że mogę wywołać po transaction.commit () coś takiego
newFragment.setMyString("my dynamic value");
I w newFragment.java mam
public void setMyString(String s)
{
TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
tv.setText(s);
}
Chodzi o to, że getActivity () zwraca wartość null. Jak mogę uzyskać kontekst potrzebny do znalezienia elementów układu?
Edytować:
Staram się podążać trasą za pomocą pakietu, ponieważ wydaje się to najczystszym sposobem. Zmieniłem więc kod:
Bundle b = new Bundle();
b.putString("text", "my dynamic Text");
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
Mój fragment onCreateView wygląda tak:
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.mylayout, container, false);
TextView t = (TextView) v.findViewById(R.id.texttobereplaced);
t.setText(savedInstanceState.getString("text");
}
Wydaje się, że savedInstranceState jest pusty. Gdzie powinienem znaleźć mój pakiet?
Edit2:
brakowało getArguments () w odpowiedzi. działa teraz.