Mam aktywność, która robi transakcję fragmentAndroid: Fragment nie może dostać aktywność
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
że działa dobrze. Teraz wiem w ramach mojej działalności dynamiczny ciąg, który muszę zastąpić w układzie, który mam w newFragment. Myślałem, że mogę zadzwonić po transaction.commit() tylko coś podobnego
newFragment.setMyString("my dynamic value");
aw 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 mojego układu?
Edit:
staram się śledzić trasę przy użyciu wiązki jak to wydaje się być najczystszym sposobem. Więc zmieniłem 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();
Moja fragment onCreateView wygląda następująco:
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.
Mój układ jest zawyżony onViewCreated jest wywoływana. Widzę mój układ. – AndyAndroid