Итак, у меня есть Activity (назовем его A) с пейджером просмотра и 3 фрагментами, один из этих фрагментов (назовем его фрагментом A) загружает список. Список onclickitem этого списка вызовет обратный вызов для действия (A), поэтому он запустит новое действие (назовем его B) с новым фрагментом (также B):
Фрагмент (A) со списком, содержащий интерфейс и onclickItemListener ():
// Container Activity must implement this interface
public interface onProcessSelectedListener{
public void onMyProcessSelected(MyProcessDTO process);
}
actualListView.setOnItemClickListener(
new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
IpdmsMobileMenuItemListDTO dto=(IpdmsMobileMenuItemListDTO) parent.getItemAtPosition(position);
if(getView().findViewById(R.id.myprocessdetail)!=null)
updateProcess((MyProcessDTO) dto.getDto());
else{
mListener.onMyProcessSelected((MyProcessDTO) dto.getDto());
}
}
});
Если макет не отображает конкретное представление, он запустит метод обратного вызова для Activity (A), в котором находится пейджер представлений с этим фрагментом:
@Override
public void onMyProcessSelected(MyProcessDTO process) {
Intent showContent = new Intent(getApplicationContext(),MyProcessDetail.class);
showContent.putExtra("Process", process);
startActivity(showContent);
}
Что вызовет новую активность (B):
@Override
public void onCreate() {
this.setTheme(getThemeId());
super.onCreate(bundle);
//get extras from bundle
extras = getIntent().getExtras();
//requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(getLayoutId());
MyProcessDTO process= (MyProcessDTO) extras.get("Process");
//get fragment
MyProcessDetailsFragment contentProcess= (MyProcessDetailsFragment) getSupportFragmentManager()
.findFragmentById(R.id.view_fragment);
contentProcess.updateProcess(process);
}
Макет, загруженный в Activity (B), содержит тег фрагмента, который указывает на класс Fragment (B). Activity (B) вызывает метод updateProcess () фрагмента (B):
public void updateProcess (процесс MyProcessDTO) {
nrProcTV.setText(process.getNrprocesso());
tipoTV.setText(process.getVariante());
}
Но по какой-то причине эти текстовые представления являются нулевыми. Они инициализируются методом onActivityCreated фрагмента (B) .:
@Override
public void initializeFragment(Bundle savedInstanceState) {
super.initializeFragment(savedInstanceState);
nrProcTV= (TextView) getView().findViewById(R.id.nrprocesso_value);
tipoTV= (TextView) getView().findViewById(R.id.tipoprocesso_value);
}
Почему метод onActivityCreated не был выполнен до вызова метода updateProcess ??
С уважением,
.