Problem: Ich brauche eine callback
von einem fragment
zu einem acitvity
passieren. Leider bekomme ich diese Stack-Trace:Rückrufe: java.lang.ClassCastException
Warum bekomme ich diesen Fehler? Ich habe einige Posts mit einem ähnlichen Problem gefunden. Leider verstehe ich immer noch nicht, warum ich dieses Problem bekomme.
FATAL EXCEPTION: main
Process:
com.stack.overflow, PID: 26190
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stack.overflow/com.stack.overflow.main.MainActivity}: java.lang.ClassCastException: com.stack.overflow.main.MainActivity cannot be cast tocom.stack.overflow.ReviewMaschineFragment$Callbacks
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassCastException:com.stack.overflow.main.MainActivity cannot be cast to com.stack.overflow.reviewmaschine.ReviewMaschineFragment$Callbacks
at com.stack.overflow.reviewmaschine.ReviewMaschineFragment.onAttach(ReviewMaschineFragment.java:101)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1039)
at android.support.v4.app.BackStackRecord.setLastIn(BackStackRecord.java:795)
at android.support.v4.app.BackStackRecord.calculateFragments(BackStackRecord.java:818)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:676)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1671)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:619)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1236)
at android.app.Activity.performStart(Activity.java:6006)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2288)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
Meine fragment
Klasse:
public class ReviewMaschineFragment extends Fragment {
(...)
public interface Callbacks {
void onUserChangedData();
}
private Callbacks mCallbacks;
(...)
@Override
public void onAttach(Context context) {
super.onAttach(context);
mCallbacks = (Callbacks) context;
EventBus.getDefault().register(this);
}
@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
EventBus.getDefault().unregister(this);
}
}
Meine activity
Klasse:
public class ReviewActivity extends AppCompatActivity implements ReviewMaschineFragment.Callbacks{
(...)
@Override
public void onUserChangedData() {
// Do something.
}
(...)
}
jetzt nicht null ist, ich bin in der Lage zu laufen die App erneut, aber der Rückruf wird noch nicht aufgerufen. Muss ich den Zeitpunkt ändern, zu dem die Callbacks initialisiert werden? – jublikon
Wenn Sie möchten, dass der Callback in Ihrer 'MainActivity' aufgerufen wird, implementieren Sie' Callbacks' wie Sie es mit 'ReviewActivity' gemacht haben. –
Funktioniert es? Gib mir Bescheid –