Как использовать интерфейс во Фрагменте? - PullRequest
1 голос
/ 17 апреля 2019

Я - прекрасный программист

У меня есть DialogFragment. DialogFragment есть interface:

public class FragmentEditClass extends DialogFragment
{
    //. . .


    public interface NotifyChanged
    {
        void updateRemoveClass(int position);
    }
}

Я использовал интерфейс на вкладке Fragment:

public class SecondTab extends Fragment implements FragmentEditClass.NotifyChanged
{
    //. . .

    @Override
    public void updateRemoveClass(int position) 
    {
       //. . .
    }
}

Я показываю DialogFragment в адаптере:

FragmentEditClass.newInstance(classId , className , position)
    .show(secondTab.getFragmentManager() , "DialogFragmentClass");

Я хочу установить связь между fragmentTab и interface в DialogFragment следующим образом:

public class FragmentEditClass extends DialogFragment
{
    private NotifyChanged notifyChanged;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        notifyChanged = (NotifyChanged) getActivity();//This line
    }
}

Теперь проблема getActivity(). этот метод относится к SecondTab, но SecondTab находится в MainActivity, и мне нужно обратиться к MainAcitvity.

MyError:

java.lang.ClassCastException: com.example.user.classmanager.MainActivity cannot be cast to com.example.user.classmanager.FragmentEditClass$NotifyChanged
    at com.example.user.classmanager.FragmentEditClass.onCreate(FragmentEditClass.java:91)
...