2013-09-18 3 views
0

У меня есть фрагмент, который создает вид. Мне нужно, чтобы он обрабатывал события с несколькими касаниями.Как установить макет для расширенного просмотра (программно)?

фрагмент кода:

public class ControllerFragment extends Fragment { 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.controller_fragment, container, false); 

     TouchEventView mView = new TouchEventView(v, container); 
    //... 
    } 

    // ... 
} 

Но главная проблема в том, что мой взгляд нет макета. Это просто черный без кнопок, textViews и других вещей, которые находятся в R.layout.controller_fragment

Итак, как мне настроить макет для моего расширенного вида?

TouchEventView:

public class TouchEventView extends View { 

    public TouchEventView(View v, ViewGroup container) { 
     super(v.getContext()); 
    } 

    // ... 
} 

ответ

0

я обнаружил, что основная проблема заключалась в том, что TouchEventView расширенный вид. Он должен расширить ту же структуру, что и в R.layout.controller_fragment.

Поэтому я добавил LayoutInflater в конструктор и передал его из фрагмента. И затем я раздул макет из конструктора TouchEventView. Теперь это выглядит следующим образом:

Фрагмент:

public class ControllerFragment extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.controller_fragment, container, false); 
     TouchEventView mView = new TouchEventView(v, inflater); 
    //... 
    } 

    // ... 
} 

Расширенный просмотр (Layout):

public class TouchEventView extends LinearLayout { 

    public TouchEventView(View v, LayoutInflater inflater) { 
     super(v.getContext()); 
     inflater.inflate(R.layout.smart_tv_controller_fragment, this, true); 
    } 
Смежные вопросы