无法在ondestroy方法内解析方法'stopService(android.content.Intent)'

问题描述 投票:1回答:1

有人可以帮我吗?我在android studio中有一个错误,但仍然找不到解决方案。很抱歉问这对您来说是否容易。我仍然是android studio的新手。它说“无法解析方法'stopService(android.content.Intent)'“ [onDestroy方法


enter image description here

package com.example.gmailsignin;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.gmailsignin.Config.Config;
import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalPayment;
import com.paypal.android.sdk.payments.PayPalService;
import com.paypal.android.sdk.payments.PaymentActivity;
import com.paypal.android.sdk.payments.PaymentConfirmation;

import org.json.JSONException;

import java.math.BigDecimal;

import static android.app.Activity.RESULT_OK;

public class PaymentFragment<btnPayNow> extends Fragment {

    public static final int PAYPAL_REQUEST_CODE =7171;
    private static PayPalConfiguration config = new PayPalConfiguration()
            .environment(PayPalConfiguration.ENVIRONMENT_SANDBOX) //nasa sand box environment ng paypal
            .clientId(Config.PAYPAL_CLIENT_ID);


    TextView totalCost;
    Button btnPayNow;

    String amount ="1500"; //let say na 1500 yung cost na naka indicate sa DB

    @Override
    public void onDestroy() {
        getActivity().stopService(new Intent(this.getActivity(),PayPalService.class));
        super.onDestroy();
    }

    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_payment, container, false);

        totalCost = v.findViewById(R.id.totalcost);
        btnPayNow = v.findViewById(R.id.btnPayNow);

        btnPayNow.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                processPayment();

            }

        });



        return v;

    }

    private void processPayment() {
        //
        //amount = edtAmout.getText().toString();


        PayPalPayment payPalPayment = new PayPalPayment(new BigDecimal(String.valueOf(amount)), "PHP" ,
                "Total Cost:", PayPalPayment.PAYMENT_INTENT_SALE);

        Intent intent = new Intent( this.getActivity(), PaymentActivity.class);

        intent.putExtra(PayPalService.EXTRA_PAYPAL_CONFIGURATION, config);
        intent.putExtra(PaymentActivity.EXTRA_PAYMENT,payPalPayment);
        startActivityForResult(intent, PAYPAL_REQUEST_CODE);
    }
    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == PAYPAL_REQUEST_CODE) {
            if (resultCode == RESULT_OK) {
                PaymentConfirmation confirmation = data.getParcelableExtra(PaymentActivity.EXTRA_RESULT_CONFIRMATION);
                if (confirmation != null) {
                    try {
                        String paymentDetails = confirmation.toJSONObject().toString(4);

                        startActivity(new Intent(this.getActivity(), PaymentDetails.class)
                                .putExtra("PaymentDetails", paymentDetails)
                                .putExtra("PaymentAmout", amount)
                        );

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }

                }

            } else if (resultCode == Activity.RESULT_CANCELED)
                Toast.makeText(this.getActivity(), "Cancel", Toast.LENGTH_SHORT).show();


        } else if (resultCode == PaymentActivity.RESULT_EXTRAS_INVALID)
            Toast.makeText(this.getActivity(), "Invalid", Toast.LENGTH_SHORT).show();
    }
}
java android android-service
1个回答
2
投票

stopService()Context上的方法,并且您的代码(大概)在一个片段中。因此,就像使用getActivity()创建Intent一样,请使用getActivity()停止服务:

getActivity().stopService(new Intent(getActivity(), PayPalService.class));

顺便说一句,请以后将代码段发布为文本,而不是图像

© www.soinside.com 2019 - 2024. All rights reserved.