Я новичок в разработке для Android, и мне нужны некоторые советы от вас.Я создаю приложение и использую фрагменты, следуя документам Google для Android.
Сейчас приложение работает нормально, но у меня есть несколько вопросов по поводу "хорошего стиля кодирования".
Итак, я решил пока разделить активность 2 на 2 фрагмента, и я добавил фрагмент программно (тег XML не объявлен), и с помощью интерфейса и метода обратного вызова я могу вызвать другой фрагмент и передать объект.
Вот код, который поможет вам понять, что я имею в виду: Упражнение 2:
ЛЕГЕНДА: SegnalazioneFotoMappa des == фрагмент2 UserLog == фрагмент1
public class ActivitySegnalazione extends AppCompatActivity implements ObjectSender{
private Segnalazione segnalazione= null;
private FragmentManager manager;
private FragmentTransaction transiction=null;
private UserLog user=null;
private DescrizioneFotoMappa des=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_segnalazione);
}
@Override
protected void onStart()
{
super.onStart();
segnalazione=new Segnalazione();
user= new UserLog();
user.setSegnalazione(segnalazione);
manager=getFragmentManager();
transiction=manager.beginTransaction();
transiction.add(R.id.acsegn, user, "userfrag" );
transiction.commit();
}
@Override
public void sender(Segnalazione segnalazione1) {
des= new DescrizioneFotoMappa(); //fragment2
des.setSegnalazione(segnalazione1);
FragmentTransaction transiction2= getFragmentManager().beginTransaction();
transiction2.replace(R.id.acsegn, des).addToBackStack("frag1").commit();
}
}
, и этоМетод onResume для фрагмента 1 ЛЕГЕНДА: obj == interface
@Override
public void onResume()
{
super.onResume();
text= (EditText) getActivity().findViewById(R.id.editText2);
text2=(EditText) getActivity().findViewById(R.id.editText3);
text3=(EditText) getActivity().findViewById(R.id.editText4);
bottone1= (Button) getActivity().findViewById(R.id.button);
obj=(ObjectSender) getActivity(); //Reference to activity
bottone1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
segnalazione.setNome(text2.getText().toString());
segnalazione.setCognome(text3.getText().toString());
obj.sender(segnalazione);
}
});
}
Я знаю, что код является беспорядком, но правильна ли "логика фрагментов", которую я использую?Код работает, как я уже сказал.
Спасибо за ваши ответы!