ich eine Aktivität haben, die funktioniert ein Fragment TransaktionAndroid: Fragment kann nicht Aktivität erhalten
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
, die gut funktioniert. Jetzt weiß ich innerhalb meiner Aktivität eine dynamische Zeichenfolge, die ich in dem Layout ersetzen muss, das ich in newFragment habe. Ich dachte, dass ich nach transaction.commit() aufrufen können nur so etwas wie
newFragment.setMyString("my dynamic value");
Und in der newFragment.java I
public void setMyString(String s)
{
TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
tv.setText(s);
}
Der Punkt ist, dass getActivity() gibt den Wert null. Wie kann ich den Kontext erhalten, den ich brauche, um meine Layout-Elemente zu finden?
Edit:
Ich versuche, die Strecke mit einem Bündel zu folgen, wie dies der sauberste Weg zu sein scheint. So habe ich meinen Code geändert:
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();
Mein Fragment onCreateView wie folgt aussieht:
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");
}
Es scheint, dass savedInstranceState leer. Wo soll ich mein Bündel finden?
Edit2:
die getArguments verpasst() in der Antwort. arbeitet jetzt.
Mein Layout ist aufgebläht onViewCreated heißt. Ich kann mein Layout sehen. – AndyAndroid