正如問題所示,我試圖從其父Activity上的onCreate中調用Fragment的方法。但是,被調用的方法會在Fragment處產生空指針異常。違規行是:加載碎片視圖後,如何調用碎片方法?
getListView().setAdapter(aAdapter);
我懷疑是getListView()還不存在。也許這是我對片段/活動生命週期知識的一個空白,但是我可以使用一個活動中的「AfterCreate」嗎?
//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);
}});}
發佈您的活動代碼。 – 2014-10-03 16:26:21
「在我可以使用的活動中是否有」AfterCreate「?」。 是的,Activity.onPostCreate() – 2014-10-03 16:50:52
@Gil +1。還'onResumeFragments()'。 – kcoppock 2014-10-03 17:05:53