Подтвердить что ты не робот

Какое основное различие между фрагментом и активностью? Какой код можно записать в фрагменте?

У меня есть три вкладки с тремя фрагментами каждый и один основной вид, и я хочу создать сокет для отправки сообщения через Wi-Fi-сеть, так где мне писать код для него? В этом конкретном классе фрагмента или основной деятельности?

4b9b3361

Ответ 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);