Ho un'attività che fa una transazione frammentoAndroid: Frammento non può ottenere l'attività
DetailFragment newFragment = new DetailFragment();
transaction.replace(R.id.mylist, newFragment);
transaction.addToBackStack(null);
transaction.commit();
che funziona bene. Ora so che all'interno della mia attività ho bisogno di una stringa dinamica da sostituire nel layout che ho in newFragment. Ho pensato che posso chiamare dopo transaction.commit() proprio qualcosa di simile
newFragment.setMyString("my dynamic value");
E nel newFragment.java ho
public void setMyString(String s)
{
TextView tv = (TextView) getActivity().findViewById(R.id.myobject);
tv.setText(s);
}
Il punto è che getActivity() restituisce null. Come posso ottenere il contesto di cui ho bisogno per trovare i miei elementi di layout?
Edit:
cerco di seguire il percorso utilizzando un fascio come questo sembra essere il modo più pulito. Così ho cambiato il mio codice:
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();
mio frammento onCreateView assomiglia a questo:
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");
}
Sembra che savedInstranceState è vuoto. Dove dovrei trovare il mio pacchetto?
Edit2:
perse le getArguments() nella risposta. sta funzionando ora.
Il mio layout è gonfiato quando viene chiamatoViewCreated. Posso vedere il mio layout. – AndyAndroid