Android 如何处理错误:java.lang.IllegalStateException:尚未创建内容视图

Android 如何处理错误:java.lang.IllegalStateException:尚未创建内容视图,android,android-fragments,android-intent,android-activity,Android,Android Fragments,Android Intent,Android Activity,InboxFragment是MainActivity的片段。 在MainActivity的action bar菜单(ActionBar上的三个点)中,我添加了一个选项Refresh Inbox,它通过创建InboxFragment对象调用函数retrieveMessages()。 retrieveMessages是InboxFragment中的一个“成员”函数(该函数之前在片段的onCreateView函数中用于检索消息,然后我对其进行重构以提取代码以在MainActivity中重用) 我已经尝

InboxFragment是MainActivity的片段。 在MainActivity的action bar菜单(ActionBar上的三个点)中,我添加了一个选项Refresh Inbox,它通过创建InboxFragment对象调用函数retrieveMessages()。 retrieveMessages是InboxFragment中的一个“成员”函数(该函数之前在片段的onCreateView函数中用于检索消息,然后我对其进行重构以提取代码以在MainActivity中重用)

我已经尝试使用intent来重新创建MainActivity,方法是使用MainActivity.class作为intent的参数,但这是一种糟糕的刷新。如何处理上述错误

以下是所需的代码片段: 在主要活动中:

 @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            int itemId = item.getItemId();

switch(itemId) {

//pieces of code we're not concerned with

    case R.id.action_refresh_inbox:
    InboxFragment inboxFragment = new InboxFragment();
    inboxFragment.retrieveMessages();
    break;
    }
}
在InboxFragment.java中-

public class InboxFragment extends ListFragment {
@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_inbox, container, false);

            return rootView;
    }
 @Override
    public void onResume() {
        super.onResume();

        retrieveMessages();
    }

    public void retrieveMessages() {
//code that was earlier running in onResume(){};
}
以下是日志:

01-11 01:35:44.515  21968-21968/com.ghostriley.sgt.ghostchat E/ViewRootImpl﹕ sendUserActionEvent() mView == null
01-11 01:35:44.535  21968-22032/com.ghostriley.sgt.ghostchat D/mali_winsys﹕ new_window_surface returns 0x3000,  [227x88]-format:1
01-11 01:35:44.945  21968-21968/com.ghostriley.sgt.ghostchat D/AndroidRuntime﹕ Shutting down VM
01-11 01:35:44.945  21968-21968/com.ghostriley.sgt.ghostchat E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.ghostriley.sgt.ghostchat, PID: 21968
    java.lang.IllegalStateException: Content view not yet created
            at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328)
            at android.support.v4.app.ListFragment.getListView(ListFragment.java:222)
            at com.ghostriley.sgt.ghostchat.UI.InboxFragment$1.done(InboxFragment.java:67)
            at com.ghostriley.sgt.ghostchat.UI.InboxFragment$1.done(InboxFragment.java:55)
            at com.parse.ParseTaskUtils$2$1.run(ParseTaskUtils.java:115)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5930)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1405)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1200)

有没有办法校准InboxFragment.onResume()。您将需要以下内容:

getFragmentManager()
    .beginTransaction()
    .add(android.R.id.content, inboxFragment)
    .commit();

您尚未将
片段
附加到
活动
。您将需要以下内容:

getFragmentManager()
    .beginTransaction()
    .add(android.R.id.content, inboxFragment)
    .commit();

通过编辑问题,在这里的“活动和片段”中发布代码的一些重要部分。我只是添加了…添加了所有必需的方法(应用程序开始崩溃后我所做的更改)和logcat。感谢您通过执行
newinboxfragment(),在刷新方法中创建了
InboxFragment
的新实例此片段从未添加到您的活动中。因此,不要每次都创建新实例,而是将第一次创建的片段引用保存在类级变量中,并对该实例调用refresh方法;通过编辑问题,在这里的“活动和片段”中发布代码的一些重要部分。我只是添加了…添加了所有必需的方法(应用程序开始崩溃后我所做的更改)和logcat。感谢您通过执行
newinboxfragment(),在刷新方法中创建了
InboxFragment
的新实例此片段从未添加到您的活动中。因此,不要每次都创建新实例,而是将第一次创建的片段引用保存在类级变量中,并对该实例调用refresh方法;