0
fragment
에서 acitvity
으로 callback
을 전달해야합니다. 불행히도 그 스택 추적을 얻을 :콜백 : java.lang.ClassCastException
왜 그 오류가 발생합니까? 비슷한 문제가있는 게시물을 발견했습니다. 불행히도 나는 왜 아직도 그 문제를 이해하지 못한다.
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)
내 fragment
클래스 :
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);
}
}
내 activity
클래스 :
public class ReviewActivity extends AppCompatActivity implements ReviewMaschineFragment.Callbacks{
(...)
@Override
public void onUserChangedData() {
// Do something.
}
(...)
}
지금은 실행할 수 있어요 null가 아닌 것을 사용할 때 이제
: 활동이
콜백을 지정하여Callbacks
를 구현하는 경우에만onAttach
방법을 변경응용 프로그램을 다시 호출하지만 콜백은 여전히 호출되지 않습니다. 콜백이 초기화되는 순간을 변경해야합니까? – jublikon
'MainActivity'에서 콜백을 호출하고 싶다면'ReviewActivity'에서했던 것처럼'Callbacks'을 구현하십시오 –
작동합니까? 알려줘 –