Полагаю, вы пытаетесь использовать android:onClick
в макете фрагмента, но это определенно повысит IllegalStateException
, и вот исключение, которое вы получили
java.lang.IllegalStateException: Could not find method onShowDialog(View) in a parent
or ancestor Context for android:onClick attribute defined on view class
Из журнала вы пытаетесь добавьте android:onClick = onShowDialog
к одному из ваших представлений макета фрагмента.
И возникает ошибка, потому что вы можете использовать android:onClick
только в макете деятельности; поэтому он пытается найти метод onShowDialog(View view)
в активности, связанной с этим фрагментом, и не может.
Итак, возможные решения:
Не использовать android:onClick
с фрагментами, просто используйте View.OnClickListener
вместо этого программно, вызывая setOnClickListener()
.
Если вы настаиваете на этом, вы можете добавить onShowDialog(View view)
к представлению в вашем представлении. макет фрагмента, но вам нужно определить этот метод в своей деятельности, как показано ниже
public void onShowDialog(View view) {
Fragment f = getSupportFragmentManager().findFragmentByTag... // get the fragment
((MyFragment) f).onShowDialog();
}
, а затем создать onShowDialog()
в вашем фрагменте.
Примечание: я предполагаю, что ваш фрагмент назван MyFragment