У меня есть три вкладки с тремя фрагментами каждый и один основной вид, и я хочу создать сокет для отправки сообщения через Wi-Fi-сеть, так где мне писать код для него? В этом конкретном классе фрагмента или основной деятельности?
Какое основное различие между фрагментом и активностью? Какой код можно записать в фрагменте?
Ответ 1
Конечно, вы можете написать любой код внутри фрагмента, но вам нужно позаботиться о нескольких вещах. При доступе к чему-либо, что требует контекста или что-то конкретное для деятельности, вам нужно будет получить ссылку на суперактивность фрагмента, например. создавая намерение внутри действия, вы делаете что-то вроде этого:
Intent intent = new Intent(this,SomeActivity.class);
но внутри фрагмента вам нужно будет сделать что-то вроде этого:
Intent intent = new Intent(super.getActivity(),SomeActivity.class);
Аналогично, если вы получаете доступ к какой-либо вещи из файла макета фрагмента. Вам необходимо выполнить следующие действия:
1) получить глобальную ссылку на родительский макет вашего фрагмента внутри вашего фрагмента. например,
private LinearLayout result_view;
2) Внедрите метод OnCreateView вместо метода onCreate.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return result_view;
}
3) Надуйте макет фрагмента, как это внутри метода onCreateView фрагмента:
result_view = (LinearLayout) inflater.inflate(
R.layout.image_detail_pager, container, false);
4) теперь вы можете получить доступ к макетам следующим образом:
layout_a = (LinearLayout) result_view
.findViewById(R.id.some_layout_id);