У меня есть операция, которая выполняет транзакцию фрагмента
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
работает отлично. Теперь я знаю в своей деятельности динамическую строку, которую мне нужно заменить в макете, который у меня есть в newFragment. Я думал, что я могу позвонить после transaction.commit() только что-то вроде
newFragment.setMyString("my dynamic value");
И в newFragment.java у меня есть
public void setMyString(String s)
{
TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
tv.setText(s);
}
Дело в том, что getActivity() возвращает null. Как я могу получить контекст, который мне нужен, чтобы найти элементы макета?
Edit:
Я стараюсь следовать по маршруту, используя пучок, поскольку это кажется самым чистым способом. Поэтому я изменил свой код:
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();
Мой фрагмент onCreateView выглядит так:
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");
}
Кажется, что savedInstranceState пуст. Где я должен найти свой пакет?
Edit2:
пропустил getArguments() в ответе. теперь работает.