Java 在新实例片段中获取视图返回null

Java 在新实例片段中获取视图返回null,java,android,android-fragments,Java,Android,Android Fragments,我有ListView.OnItemClickListener当item单击它时调用函数selectItem()在这里我创建了一个fragment的新实例 private void selectItem(int position, String groupId) { some code ....... // Create a new fragment Fragment _fragment = MainGroupFragment.newInstance(mAc

我有
ListView.OnItemClickListener
当item单击它时调用函数
selectItem()
在这里我创建了一个fragment的新实例

private void selectItem(int position, String groupId) {

     some code
     .......

    // Create a new fragment
    Fragment _fragment = MainGroupFragment.newInstance(mActivity, MainGroupId, groupId);

    View _view = _fragment.getView();//this return null

    ........
    some code
}
代码MainGroupFragment

public class MainGroupFragment extends Fragment {

public static final String TAG = "MainGroupFragment";
public static final String ARG_STRING_MAIN_GROUP = "main_group_id";
public static final String ARG_STRING_ITEM_GROUP = "item_group";
public static final String ARG_STRING_ARR_IMAGES = "images";
private Random mRandom;
private static final SparseArray<Double> sPositionHeightRatios = new SparseArray<Double>();
private DisplayImageOptions options;
StaggeredGridView lStaggeredView;
ArrayList<String> lImageUrls = null;
private View lView;

public static final MainGroupFragment newInstance(Activity mActivity, String pMainGroup, String pGroupId){
    MainGroupFragment _fragment = new MainGroupFragment();

    Bundle _bundle = new Bundle();
    _bundle.putString(MainGroupFragment.ARG_STRING_MAIN_GROUP, pMainGroup);
    ArrayList<String> _images = null;
    _images = ItemORM.selectImagesByGroup(mActivity, pGroupId);
    _bundle.putStringArrayList(MainGroupFragment.ARG_STRING_ARR_IMAGES, _images);
    _fragment.setArguments(_bundle);


    return _fragment;
}

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

    mRandom = new Random();
    options = new DisplayImageOptions.Builder()
            .showImageOnLoading(R.drawable.ic_img_placeholder)
            .showImageForEmptyUri(R.drawable.ic_img_not_available)
            .showImageOnFail(R.drawable.ic_img_broken)
            .cacheInMemory(true)
            .cacheOnDisk(true)
            .considerExifParams(true)
            .bitmapConfig(Bitmap.Config.RGB_565)
            .build();
}

@Override
public View onCreateView(LayoutInflater inflater,
                         ViewGroup container, Bundle savedInstanceState) {

    //@TODO create gridview here
    View rootView = inflater.inflate(R.layout.fr_main_group_grid, container, false);
    lStaggeredView = (StaggeredGridView) rootView.findViewById(R.id.grid_view);
    Bundle args = getArguments();
    lImageUrls = args.getStringArrayList(ARG_STRING_ARR_IMAGES);
    String _groupName = args.getString(ARG_STRING_ITEM_GROUP);

    View _rooHeader = inflater.inflate(R.layout.fr_main_group_grid_item_header_footer, container, false);
    TextView _header = (TextView) _rooHeader.findViewById(R.id.txt_title);
    _header.setText(_groupName);

    lStaggeredView.addHeaderView(_header);
    lStaggeredView.setAdapter(new ImageAdapter());

    setFragmentView(rootView);

    return rootView;

}

..... 
some code
}
public类MainGroupFragment扩展了片段{
公共静态最终字符串TAG=“MainGroupFragment”;
公共静态最终字符串ARG\u String\u MAIN\u GROUP=“MAIN\u GROUP\u id”;
公共静态最终字符串ARG\u String\u ITEM\u GROUP=“ITEM\u GROUP”;
公共静态最终字符串ARG\u String\u ARR\u IMAGES=“IMAGES”;
私有随机域;
专用静态最终SparseArray sPositionHeightRatios=新SparseArray();
私有显示图像选项;
交错边缘视图lStaggeredView;
ArrayList lImageUrls=null;
私人视图;
public static final MainGroupFragment newInstance(活动mActivity、字符串pMainGroup、字符串pGroupId){
MainGroupFragment _fragment=新的MainGroupFragment();
Bundle _Bundle=新Bundle();
_bundle.putString(mainggroupfragment.ARG\u STRING\u MAIN\u GROUP,pMainGroup);
ArrayList_images=null;
_images=ItemORM。选择imagesbygroup(mActivity,pGroupId);
_bundle.putStringArrayList(MainGroupFragment.ARG\u STRING\u ARR\u IMAGES,\u IMAGES);
_fragment.setArguments(_bundle);
返回片段;
}
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mRandom=新随机数();
选项=新建DisplayImageOptions.Builder()
.showImageOnLoading(R.drawable.ic\u img\u占位符)
.showImageForEmptyUri(R.drawable.ic\U img\U不可用)
.showImageOnFail(R.drawable.ic\U img\U损坏)
.cacheInMemory(真)
.cacheOnDisk(真)
.considerExifParams(真)
.bitmapConfig(Bitmap.Config.RGB_565)
.build();
}
@凌驾
创建视图上的公共视图(更平坦的充气机,
视图组容器,捆绑包savedInstanceState){
//@TODO在此处创建gridview
视图根视图=充气机。充气(R.layout.fr\u main\u group\u网格,容器,false);
lStaggeredView=(StaggeredGridView)rootView.findViewById(R.id.grid_视图);
Bundle args=getArguments();
lImageUrls=args.getStringArrayList(ARG\u STRING\u ARR\u图像);
String\u groupName=args.getString(ARG\u String\u ITEM\u GROUP);
视图_rooHeader=充气机。充气(R.layout.fr\u main\u group\u grid\u item\u header\u footer,container,false);
TextView _header=(TextView)_rooHeader.findViewById(R.id.txt_title);
_header.setText(_groupName);
lstageredview.addHeaderView(_头);
lstageredview.setAdapter(新的ImageAdapter());
setFragmentView(rootView);
返回rootView;
}
..... 
一些代码
}
当我从新创建的片段中获取视图时,它返回null。我做错了吗?我是新来的,还在探索。任何帮助都将不胜感激


谢谢。

片段在附加到片段活动之前不会创建其视图。此时将调用onCreateView


熟悉片段生命周期

我强烈建议您阅读一本关于Android的实际书籍,而不是零散的教程,例如Reto Meier的专业Android应用程序开发。它将更好地解释Android框架的核心概念,包括是什么导致了您的困惑(Fragment的生命周期)。谁会投反对票,请花点时间解释一下原因!有没有什么方法可以在不显示UI的情况下创建片段?只是为了看风景?我的意思是,无论你想做什么都不是正常的方式。我从未需要创建但不显示片段。我使用FragmentStatePagerAdapter创建了一个SlidingTableOut和ViewPager,我想替换同一选项卡中的片段。示例im在标签1中有片段1,我想在单击导航抽屉时用片段2更改片段1。好的,但是为什么您需要访问视图?查找替换fragment.ViewPager pager=(ViewPager)mActivity.findViewById(R.id.pager);FragmentStatePagerAdapter a=(FragmentStatePagerAdapter)pager.getAdapter();ViewGroup _vGroup=(ViewGroup)lfFragmentManager.getFragments().get(pager.getCurrentItem()).getView()_vGroup.removeView(vGroup.findviewbyd(R.id.grid_视图))_addView(这个来自新片段的视图);removeViewAt(pager.getCurrentItem());pager.addView(vu组,pager.getCurrentItem());为此,我删除当前项并添加新项。