Android :Фрагмент не может получить активность

У меня есть активность, которая выполняет транзакцию фрагмента

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. Как я могу получить контекст, который мне нужен для поиска элементов макета?

Изменить:

Я пытаюсь следовать маршруту, используя пакет, так как это кажется самым чистым способом. Поэтому я изменил свой код:

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");
}

Кажется, что saveInstranceState пуст. Где я должен найти свой пакет?

Редактировать2:

пропустил getArguments ()в ответе. сейчас работает.

18
задан AndyAndroid 1 August 2012 в 10:20
поделиться