java .lang.ClassCastException: CLASS / Activity нельзя привести к MainActivity. - PullRequest
1 голос
/ 16 апреля 2020

Я просто хочу вызвать этот фрагмент после статуса успешной оплаты, но я не знаю, как заставить его работать.

Ошибка при ((MainActivity) getActivity()).setTitle(getResources().getString(R.string.thank_you));

 @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_order_thanks, container, false);

        ((MainActivity) getActivity()).setTitle(getResources().getString(R.string.thank_you));
        preferences = getActivity().getSharedPreferences("lan", MODE_PRIVATE);
        language=preferences.getString("language","");

        view.setFocusableInTouchMode(true);
        view.requestFocus();

Класс PaymentGatWay

public class PaymentGatWay extends Activity{

. , .

protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_instamojo_payment);
            sessionManagement = new Session_management(PaymentGatWay.this);

publi c void onResponse (ответ JSONObject) {Log.d (TAG, response.toString ());

            try {
                Boolean status = response.getBoolean("responce");
                if (status) {
                    String msg = response.getString("data");
                    String msg_arb=response.getString("data");
                    db_cart.clearCart();
                    Bundle args = new Bundle();
                    Fragment fm = new Thanks_fragment();
                    args.putString("msg", msg);
                    args.putString("msgarb",msg_arb);
                    fm.setArguments(args);


                    FragmentManager fragmentManager = getFragmentManager();

                    FragmentTransaction ft = fragmentManager.beginTransaction();
                    ft.replace(R.id.contentPanel, fm)
                            .addToBackStack(null).commit();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }

ошибка вывода

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)

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

java.lang.ClassCastException: gogrocer.tcc.PaymentGatWay нельзя привести к gogrocer.tcc.MainActivity

изменить это:

((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));
0 голосов
/ 17 апреля 2020

Вы должны проверить, какую деятельность вы получаете от getActivity ().

  if(getActivity() is PaymentGatWay){
        (getActivity() as 
         PaymentGatWay).setTitle(getResources().getString(R.string.thank_you));
      }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...