ClassCastException ((MainActivity)getActivity()).clearApp();

ClassCastException ((MainActivity)getActivity()).clearApp();

如果我在 PrefsFragment 中调用 ((MainActivity)getActivity()).clearApp();。我得到这个错误......为什么?

我该如何解决这个问题并了解这个错误。

08-22 12:33:10.833 13362-13362/com.my.blacky E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.my.blacky, PID: 13362
java.lang.ClassCastException: com.my.blacky.PrefsActivity cannot be cast to com.my.blacky.MainActivity
   at com.gerpue.blacky.FragmentPrefs.onPreferenceClick(FragmentPrefs.java:62)
   at android.preference.Preference.performClick(Preference.java:996)
   at android.preference.PreferenceScreen.onItemClick(PreferenceScreen.java:214)
   at android.widget.AdapterView.performItemClick(AdapterView.java:310)
   at android.widget.AbsListView.performItemClick(AbsListView.java:1188)
   at android.widget.AbsListView$PerformClick.run(AbsListView.java:3105)
   at android.widget.AbsListView.run(AbsListView.java:4096)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:148)
   at android.app.ActivityThread.main(ActivityThread.java:5551)
   at java.lang.reflect.Method.invoke(Native Method)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

方法是clearApp();存在于 MainActivity 或 PrefsActivity 中?

如果它在 PrefsActivity 中,那么您可以尝试这样的操作

((PrefsActivity)getActivity()).clearApp();  // because You are currently in PrefsActivity

如果该方法在 MainActivity 中,但您仍想使用 PrefsFragment 中的方法( PrefsActivity 中的 PrefsFragment 片段)。将 clearApp() 方法声明为静态方法并像下面那样访问

MainActivity.clearApp();

MainActivty 中的 clearApp 方法应该是这样的

public static void clearApp()
{
       // your implementation 
}