【发布时间】:2014-10-03 16:22:15
【问题描述】:
正如问题所示,我正在尝试从其父 Activity 的 onCreate 调用 Fragment 的方法。但是,被调用的方法会在 Fragment 处产生空指针异常。违规行是:
getListView().setAdapter(aAdapter);
我怀疑 getListView() 还不存在。也许这是我对 Fragment/Activity 生命周期的知识的一个空白,但是我可以使用 Activity 中的“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);
}});}
【问题讨论】:
-
发布您的活动代码。
-
“我可以使用 Activity 中的“AfterCreate”吗?”。是的,Activity.onPostCreate()
-
@Gil +1。还有
onResumeFragments(). -
@kcoppock 很酷,不知道那个。看起来它只是在支持库中。
标签: android android-fragments android-fragmentactivity android-lifecycle