2015-02-26 2 views
-2

Я имею ListView.OnItemClickListener когда деталь щелкните его вызвать функцию selectItem(), где я создать новый экземпляр фрагментаПолучить представление в новый экземпляр возвращает фрагмент обнулить

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 
} 

, когда я получаю представление из вновь созданного фрагмента возвращает null. я делаю это неправильно? im новый и все еще исследующий. любая помощь будет оценена по достоинству.

спасибо.

+0

Я настоятельно рекомендую вам прочитать настоящую книгу о Android вместо разбросанных учебников, для профессионального Android App развития Примера Рето Майера. Это лучше объяснит основные концепции платформы Android, включая то, что вызывает ваше замешательство (жизненный цикл фрагмента). – 2Dee

+1

Кто когда-либо занижает, возьмите секунду, чтобы объяснить, почему! – weston

ответ

0

Фрагменты не создают свои представления до тех пор, пока они не будут прикреплены к фрагментации. То есть, когда вызывается onCreateView.

Ознакомьтесь с фрагментом жизненного циклом http://developer.android.com/reference/android/app/Fragment.html

+0

ОК спасибо, почему вниз? – jAy

+0

Я не спустил вниз, если это то, о чем вы просите. – weston

+0

Есть ли способ создать фрагмент без отображения пользовательского интерфейса? просто чтобы получить представление? – jAy

Смежные вопросы