Существует несколько способов сделать это. Если вам не нужно, чтобы это было многоразовым, тогда решение с более высоким уровнем сцепления в порядке. В этом случае фрагмент говорит представлению о себе и мнение может просто вызвать метод:
class CustomCameraPreview extends SurfaceView
{
FragmentA fragment;
// Call from onCreateView() in the framgnet
public void setFragment(FragmentA fragment)
{
this.fragment = fragment;
}
private void someMethod() {
if (fragment != null)
fragment.callback();
}
}
public class FragmentA extends Fragment {
public void callback() {
// called from the view
}
}
Если вам это нужно, чтобы быть более универсальными и многоразовыми, а затем создать интерфейс, который содержит вид обратных вызовов вида будет необходимо вызвать и реализовать этот интерфейс. Это в основном шаблон наблюдателя: http://en.wikipedia.org/wiki/Observer_pattern
interface CameraPreviewListener {
public void callback1() ;
public void callback2() ;
}
class CameraPreview extends SurfaceView
{
CameraPreviewListener listener;
// Call from onCreateView() in the framgnet
public void setFragment(CameraPreviewListener listener)
{
this.listener = listener;
}
private void someMethod1() {
if (listener != null)
listener.callback1();
}
private void someMethod2() {
if (listener != null)
listener.callback2();
}
}
public class FragmentA extends Fragment implements CameraPreviewListener{
public void callback1() {
// called from the view
}
public void callback2() {
// called from the view
}
}
отлично, очень нравится подход с обратными вызовами! – user2426316