首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FragmentManager的异步

FragmentManager的异步
EN

Stack Overflow用户
提问于 2014-07-17 23:23:56
回答 1查看 86关注 0票数 1

我的项目在Eclipse中运行良好,但是自从我将我的项目迁移到AndroidStudio之后,我得到了一个奇怪的NullPointerException,我不知道它出了什么问题。具体地说,无论出于何种原因,fragment.getView()总是返回null

代码语言:javascript
复制
public class MainActivity extends FragmentActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    if (savedInstanceState == null) {
        selectItem(0);
    }
}

private void selectItem(int position) {
    // update the main content by replacing fragments
    Fragment fragment;
    switch(position) {
        case 0:
            fragment = new Fragment1();
            break;
        default:
            fragment = new Fragment1();
    }

    switchFragment(fragment, position);
}

private void switchFragment(Fragment fragment, int position){
    FragmentManager fm = getSupportFragmentManager();
    fm.beginTransaction()
            .replace(R.id.fragmentContainer, fragment)
            .commit();
    fragment.getView().setFocusableInTouchMode(true);
}

问题出在fragment.getView().setFocusableInTouchMode(true)行。我认为当FragmentManager提交fragment时,它的视图应该已经创建,但显然我错了。我试着查了查,但找不到任何令人满意的解释。请帮我解决这个问题。下面是我的Fragment1类:

代码语言:javascript
复制
public class Fragment1 extends Fragment {

@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
} 

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState){
    return inflater.inflate(R.layout.activity_fragment1, parent, false);
}


}
EN

回答 1

Stack Overflow用户

发布于 2014-07-17 23:30:40

片段事务是异步执行的。可以把它看作是一个发布到UI线程消息队列的runnable。

特别是,只有在调用生命周期方法之后,getView()才会返回您从onCreateView()返回的任何内容。在它返回null之前。

您应该将诸如setFocusableInTouchMode()之类的视图定制放入片段本身。onCreateView()onViewCreated()都是不错的选择。

与Android Studio无关。它在两个IDE中的工作方式是相同的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24807630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档