【问题标题】:java.lang.IllegalStateException: Content view not yet created while using drawerjava.lang.IllegalStateException:使用抽屉时尚未创建内容视图
【发布时间】:2014-12-08 07:24:07
【问题描述】:

我正在为我的 android 应用程序使用抽屉列表。 有问题。 当我随机单击(非常快)时,我会在 Log 中显示 forcestop 和 java.lang.IllegalStateException: Content view not yet created。 我正在使用片段

我还收到以下运行时错误 在 android.support.v4.app.ListFragment.ensureList(ListFragment.java:32

这是从抽屉列表中选择的我的代码的一部分

Fragment home = new Home();
    Fragment feeds = new Feeds_ListView(); 

.....

private void selectItem(int position) 
{

    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    switch (position) 
    {

        case 0:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, feeds);

            break;
        case 1:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, NewPostFragment);
            break;
        case 2:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, SearchDetailsFragment);
            break;
        case 3:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, feeds1);
            break;
        case 4:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, UserDetailsFragment);
            break;
        case 5:
            setTitle(title[position]);
            ft.replace(R.id.content_frame, FBActivity);
            break;
    }
    ft.commit();
    mDrawerList.setItemChecked(position, true);
    setTitle(title[position]);
    mDrawerLayout.closeDrawer(mDrawerList);
}


@Override
protected void onPostCreate(Bundle savedInstanceState) 
{
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) 
{
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public void setTitle(CharSequence title) 
{
    mTitle = title;
    getSupportActionBar().setTitle(mTitle);
}

这里是Feeds_ListView()的部分;

    @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{   
    context=container.getContext();
    rootView = inflater.inflate(R.layout.feeds_listview_layout, container, false);


    list = (ListView) rootView.findViewById(android.R.id.list);
    mRelativeLayout=rootView.findViewById(R.id.mRelativeLayout);

    saveProgress =(ProgressBar) rootView.findViewById(R.id.loadpost);
    saveProgress.setVisibility(View.INVISIBLE);



    userAdapter = new CustomListAdapter(getActivity(), R.layout.feeds_listview_item,userArray);





    mRelativeLayout.setVisibility(View.GONE);

    list.setItemsCanFocus(false);
    list.setAdapter(userAdapter);
    return rootView;

}





@Override
public void onActivityCreated(Bundle savedInstanceState)
{ 
    super.onActivityCreated(savedInstanceState);

     SharedPreferences settings =getActivity().getSharedPreferences("newdatabase",0);

        String user_id=settings.getString("user_id", "--");

        if(user_id.equals("--") || user_id.equals(""))
        {   FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();          

            ft.replace(R.id.content_frame, FBActivity);
            ft.commit();
        }else{
                 new Onscrollasync().execute();

            ((PullToRefresh_Master) getListView()).setOnRefreshListener(new OnRefreshListener() 
            {
                @Override
                public void onRefresh() 
                {
                    new Onscrollasync().execute();
                }
            });
        }


}

【问题讨论】:

  • 在适当的膨胀之前,您是否在 onCreateView 中进行了一些操作?将该代码移至 onActivityCreated 或 onViewCreated 。
  • 显示您的 Feeds_Listview fragment.class 文件
  • @goonerdroid 我已经添加了代码.. 请提出建议。
  • 研究了一个星期后,我得到了解决方案,'@Override public void onStop() { super.onStop();如果 (onsynk != null) { onsynk.cancel(true); } } '

标签: java android android-fragments


【解决方案1】:

问题在于您在onCreateView 中编写的片段Home 中的代码。将onCreateView() 中的代码移动到onActivityCreated()onViewCreated()。 StackOverlfow 上有几个类似的问题,例如here

【讨论】:

  • 实际上,我没有得到强制停止,我正在以正常速度单击抽屉列表。但是如果我非常快速地单击列表,它会强制停止...希望这会有所帮助..
【解决方案2】:

试试这个而不是给容器充气,试着在没有容器的情况下给你的视图充气

rootView = inflater.inflate(R.layout.feeds_listview_layout,null);

让我知道这是否有效。

【讨论】:

  • 感谢您的建议。但我认为将我的代码移动到 onActivityCreated() 对我的 feed_view() 有效
  • 哦不,再次强制停止,当我随机点击抽屉列表时
  • 你传空参数了吗?
  • 是的。空参数在开始时强制停止。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-13
  • 2014-10-04
  • 2016-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
相关资源
最近更新 更多