1

Я мог бы использовать onCreateView(), чтобы получить ссылку на дочерний вид во фрагменте, а затем написать метод getter внутри того же фрагмента для этого представления, который будет вызываться Activity для получения ссылки на представление. Как:Возможно ли получить ссылку на дочерний элемент фрагмента внутри объекта onCreate()?

@Override 
public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) { 
    LinearLayout rootLinearLayout = (LinearLayout) layoutInflater.inflate(R.layout.my_fragment, container, false); 
    javaCameraView = (JavaCameraView) rootLinearLayout.findViewById(R.id.myFragment_javaCameraView);//*********** 
    return rootLinearLayout; 
} 

JavaCameraView getCameraView() { 
    return javaCameraView; 
} 

Но проблема в том, что мне нужно мнение ребенка внутри Активности-х onCreate(), и я думаю, что onCreateView() фрагмента называется ПОСЛЕ onCreate() от активность возвращается. Reference

Так есть способ получить ссылку на вид фрагмента внутри onCreate() мероприятия?

+1

Если вы хотите что-то сделать с помощью 'javaCameraView' после его создания, почему бы просто не сделать это во Фрагменте? – NoChinDeluxe

+1

Как бы вы получили доступ к чему-либо, чего не существует в тот момент? –

ответ

3

Вы делаете это неправильно. Вы не должны подвергать элементы пользовательского интерфейса фрагмента хостинговой деятельности. Фрагмент должен инкапсулировать его представления и функциональные возможности. Если вы действительно используете только фрагмент в качестве компонента пользовательского интерфейса, создайте пользовательский вид и используйте его в действии.

Чтобы ответить на ваш вопрос, нет, вы не можете получить ссылку на представление фрагмента в действии onCreate(). Причина в том, что представление фрагмента не существует, пока фрагмент не прошел через его жизненный цикл. Нет никакой гарантии, когда это произойдет, поэтому плохое кодирование основано на таких предположениях.

Если фрагмент должен передавать события обратно в действие, активируйте его действие с помощью интерфейса прослушивателя и, если необходимо, вызовите этот фрагмент.

Так что в вашем случае, вы могли бы сделать что-то подобное в осколком onCreateView(),

if (getActivity() instanceof Listener) { 
    ((Listener)getActivity()).onViewCreated(fragmentViews); 
} 

Но опять же, что делает это неправильно.

-1

Чтобы позвонить по телефону onCreateView() вручную, это должно работать, хотя это не очень хороший способ сделать это.

private JavaCameraView javaCameraView; 

@Override 
public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) { 
    LinearLayout rootLinearLayout = (LinearLayout) layoutInflater.inflate(R.layout.my_fragment, container, false); 
    javaCameraView = (JavaCameraView) rootLinearLayout.findViewById(R.id.myFragment_javaCameraView); 
    return rootLinearLayout; 
} 

JavaCameraView getCameraView(LayoutInflater layoutInflater) { 
    if (javaCameraView == null) { 
     onCreateView(layoutInflater, null, null); 
    } 
    return javaCameraView; 
} 

Вы можете использовать yourFragment.getCameraView(getLayoutInflater()) в вашем onCreate().

+2

Это ужасная, страшная идея. Только Android должен вызывать методы жизненного цикла. –

+0

Я знаю, я написал, что это не очень хороший способ сделать это –

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

  • Нет связанных вопросов^_^