Как указывает вопрос, я пытаюсь вызвать метод Фрагмента из его родительской активности onCreate. Однако вызываемый метод дает исключение с нулевым указателем в фрагменте. Оскорбительная линия:Как вызвать метод Фрагмента после загрузки фрагмента?
getListView().setAdapter(aAdapter);
Мое подозрение - getListView() еще не существует. Возможно, это пробел в моем знании жизненных циклов фрагмента/действия, но есть ли «AfterCreate» в Activity, который я мог бы использовать?
//Views
private RelativeLayout vClassSettings;
private LinearLayout vPeople;
private LinearLayout vLinks;
private RelativeLayout vAttendanceSettings;
private static final String sTag = "ActivityClassEdit";
private Boolean insertMode;
//==============On Create================
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_classedit);
vClassSettings=(RelativeLayout) findViewById(R.id.ace_container_settings);
vPeople = (LinearLayout) findViewById(R.id.ace_container_people);
vLinks = (LinearLayout) findViewById(R.id.ace_container_links);
vAttendanceSettings = (RelativeLayout) findViewById(R.id.ace_container_attendanceDetails);
insertMode=true;
startupFragments();
}
/*
Sets modes for children fragments so that we do not get null adapters, be it Object or SQL related
*/
private void startupFragments(){
instantiateFragments();
if(insertMode){
if(fLinkList==null){Log.d(sTag,"null fragment for LinkList");}
fLinkList.setArrayMode();
fCrList.setArrayMode();
fPersonList.setArrayMode();
} else {
//TODO set CursorMode with parent class argument
}
}
И метод обижая фрагмента:
public void setArrayMode(){
aAdapter = new LinkArrayListAdapter(getActivity(), links);
getListView().setAdapter(aAdapter);
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
final LinkTable.Link selectedLink = (Link) parent.getItemAtPosition(position);
selectedLink.setIndex(aAdapter.getPosition(selectedLink));
App.getInstance().getEventBus().post(new FragmentEvent.LinkObjectLoad(selectedLink));
//App.getInstance().getEventBus().post(arg0);
}});}
Отправьте код своей деятельности. –
«Есть ли« AfterCreate »в Activity, который я мог бы использовать?». Да, Activity.onPostCreate() –
@Gil +1. Также 'onResumeFragments()'. – kcoppock