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));
      }