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

Android ClassCastException((MainActivity)getActivity()).clearApp();,android,classcastexception,Android,Classcastexception,如果我调用((MainActivity)getActivity()).clearApp()在我的PrefsFragment中。我得到这个错误。。。为什么? 如何修复此iusse并理解此错误 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.m

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

如何修复此iusse并理解此错误

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$2.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$3.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();是否存在于主活动或预活动中

如果是在PrefsActivity,那么你可以尝试这样的事情

((PrefsActivity)getActivity()).clearApp();  // because You are currently in PrefsActivity
如果该方法位于MainActivity中,并且仍然希望使用PrefsFragment中的方法(PrefsFragment片段位于PrefsActivity中)。将clearApp()方法声明为静态,如下所示

MainActivity.clearApp();
clearApp方法在MainActivty中应该是这样的

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

您当前处于PrefsActivity并尝试使用MainActivity强制转换。((PrefsActivity)getActivity()).clearApp();像这样检查谢谢,这是主要活动,这是解决方案!欢迎您能接受答案吗?这样就不会陷入未回答的问题中,但我必须使用非静态方法?我使用Sharedpref“设置”保存“istheFirstRun”,并在.clearApp()中调用。。。。setting.edit().clear().apply();但是,如果我改为static,我会得到一个错误:不能从静态上下文引用非静态字段“setting”