java.lang.ClassCastException:类/活动不能强制转换为MainActivity
我只想在支付成功状态后调用此片段,但我不知道如何使其工作java.lang.ClassCastException:类/活动不能强制转换为MainActivity,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我只想在支付成功状态后调用此片段,但我不知道如何使其工作 ((MainActivity)getActivity()).setTitle(getResources().getString(R.string.thank_you))上出现错误 PaymentGatWay班 public class PaymentGatWay extends Activity{ 。 . 公共void onResponse(JSONObject响应){ Log.d(TAG,response.toString()) 输
((MainActivity)getActivity()).setTitle(getResources().getString(R.string.thank_you))上出现错误代码>
PaymentGatWay班
public class PaymentGatWay extends Activity{
。
.
公共void onResponse(JSONObject响应){
Log.d(TAG,response.toString())
输出误差
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.gogrocer.tcc, PID: 9816
java.lang.ClassCastException: gogrocer.tcc.PaymentGatWay cannot be cast to gogrocer.tcc.MainActivity
at Fragment.Thanks_fragment.onCreateView(Thanks_fragment.java:51)
at android.app.Fragment.performCreateView(Fragment.java:2508)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1279)
at android.app.FragmentManagerImpl.addAddedFragments(FragmentManager.java:2407)
at android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2186)
at android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2142)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2043)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:719)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
java.lang.ClassCastException
:gogrocer.tcc.PaymentGatWay
不能被删除
转换到gogrocer.tcc.main活动
更改此项:
((MainActivity) getActivity()).setTitle(getResources().getString(R.string.thank_you));
为此:
((PaymentGatWay) getActivity()).setTitle(getResources().getString(R.string.thank_you));
或将其更改为:
getActivity().setTitle(getResources().getString(R.string.thank_you));
您必须检查从getActivity()获取的活动
它在起作用,但它产生了一个问题,我认为这是一个简单的方法,让我解释细节。它在起作用,但它产生了一个问题,我认为这是一个简单的方法,让我解释细节。所有调用getActivity()).setTitle
使用MainActivity是否有一种方法可以在不从MainActivity
更改为PaymentGatWay
的情况下调用它,使用MainActivity的每个类都会在PaymentGatWay扩展时扩展片段Activity@AfonsoCardozoCruz我只是添加了另一个选项,它也可以工作,但是,我使用了一个名为updateHeader()的方法
如果没有((MainActivity)getActivity())
@AfonsoCardozoCruz将该方法(updateHeader()
)复制到PaymentGatWay
或复制到基本activity类并从中继承所有活动,或创建接口并实现它,我将尝试您的解决方案,但我如何检查getActivity()是否是PaymentGatWaytry上面的解决方案,因为我已经添加了检查活动的代码。
((MainActivity) getActivity()).setTitle(getResources().getString(R.string.thank_you));
((PaymentGatWay) getActivity()).setTitle(getResources().getString(R.string.thank_you));
getActivity().setTitle(getResources().getString(R.string.thank_you));
if(getActivity() is PaymentGatWay){
(getActivity() as
PaymentGatWay).setTitle(getResources().getString(R.string.thank_you));
}