У меня есть фрагмент, который раздувает пользовательский вид.Создание пользовательского onClickListner для фрагмента
В настоящее время просматривать обновления, когда пользователь нажимает на нее с помощью функции представления
public boolean onTouchEvent(MotionEvent event) {... }
Однако, я также хочу обновить, какие фрагменты отображаются при наличии MotionEvent. Не рекомендуется, чтобы получить доступ к FragmentManager
внутри пользовательского представления и делать что-то вроде:
try{
Activity a = (Activity) context;
FragmentManager fm = a.getFragmentManager();
// Use the fragment manager
} catch (ClassCastException e) {
Log.d(TAG, "Can't get the fragment manager with this");
}
Кажется грязным и полным пит-падения. Я вижу, что для фрагмента, который расширяет ListFragment, есть public void onListItemClick(ListView l, View v, int position, long id)
, который позволит создать обратный вызов, есть ли способ заставить это работать для стандартного фрагмента?
UPDATE:
Для тех, кто заинтересован, решение положить onClickListener в фрагменте onCreateView
что-то вроде:
View canvasView = inflater.inflate(R.layout.canvas_view , container, false);
ComposeView myView = (ComposeView) canvasView.findViewById(R.id.myDrawView2);
myView.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View view) {
Log.d("FRAG", "OnClick Called");
showNumericInput();
}
});
return canvasView;
А также генерировать clickEvent в onTouchEvent
на View this.performClick();
. Таким образом, будет вызван вид s
onTouchEvent`, и это запустит последующий clickEvent, который вызовет обработчик, определенный во Фрагменте.
Невидимая кнопка в качестве фона фрагмента? Вам нужно будет сделать базовый макет RelativeLayout и поместить другие виджеты поверх невидимой кнопки. –
Внедрите пользовательский интерфейс в своей деятельности и передайте ссылку на интерфейс для требуемой деятельности. – dm78