Получение переменой из одного класса в другое Activity

272
14 августа 2017, 09:22

Пытаюсь реализовать платное удаление рекламы. Для платежей использую эту библиотеку .

Создал активити, в котором пользователь производит оплату, после чего записывается переменная isRemoveAds = true;.

Как передать её из активити, в котором совершается в платеж в любое другое активити?

Пытаюсь так:

final PaymentActivity payment = new PaymentActivity (MainActivity.this);
if(payment.isRemoveAds==false) {
            Appodeal.show(this, Appodeal.BANNER_TOP);
}

Но получаю ошибку:

this class should provide a default constructor

И PaymentActivity в Manifest подсвечивает:

has no default constructor

Насколько я понял эта ошибка возникает из-за аргументов PaymentActivity.

PaymentActivity:

public class PaymentActivity extends AppCompatActivity implements BillingProcessor.IBillingHandler{
    private final Context myContext;
    BillingProcessor bp;
    boolean isRemoveAds = false;
    public PaymentActivity(Context context) {
        this.myContext = context;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_payment);
        String base64EncodedPublicKey =
                "KEY";
        bp = new BillingProcessor(this, base64EncodedPublicKey, this);
        ImageView background = (ImageView) findViewById(R.id.imageView3);
        Glide.with(this).load(R.drawable.payment_bg).asBitmap().diskCacheStrategy(DiskCacheStrategy.NONE)
                .skipMemoryCache(true).format(DecodeFormat.PREFER_ARGB_8888).centerCrop().into(background);
        ImageView btnRemoveAds = (ImageView) findViewById(R.id.removeAds);
        Glide.with(getApplicationContext())
                .load(R.drawable.quit_button).asBitmap().format(DecodeFormat.PREFER_ARGB_8888).into(btnRemoveAds);
        btnRemoveAds.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                bp.purchase(PaymentActivity.this, "android.test.purchased");
            }
        });
    }

    @Override
   public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {
        isRemoveAds = true;
    }
    @Override
    public void onPurchaseHistoryRestored() {
    }
    @Override
    public void onBillingError(int errorCode, @Nullable Throwable error) {
    }
    @Override
    public void onBillingInitialized() {
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (!bp.handleActivityResult(requestCode, resultCode, data)) {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
    @Override
    public void onDestroy() {
        if (bp != null) {
            bp.release();
        }
        super.onDestroy();
    }
}

Как передать isRemoveAds в другие активити?

Answer 1

Трогать конструкторы фрагментов и активити нельзя - система будет кидать исключения. Это произойдёт потому что система сама создаёт экземпляры этих классов и сама ими манипулирует для поддержания жизненного цикла.

Могу посоветовать сделать иначе - при успешной покупке записать в SharedPreferences boolean значение и его получать в других активити.

Либо запускать активити с покупками через startActivityForResult - тогда в вызвавшей активити буедт вызван после завершения покупки метод onActivityResult и в нём вы можете получить результат переданный из запускаемой активити.

READ ALSO
Как добавить нижнее подчеркивание в EditTExt

Как добавить нижнее подчеркивание в EditTExt

Есть EditText надо сделать чтоб у него было нижнее подчеркивание и при вводе цифр каждое подчеркивание заполнялось выбранным симваломКак такое...

619
Перевод char или String в двоичный код (Java)

Перевод char или String в двоичный код (Java)

Ребят, вопрос, в принципе, не такой и сложный, однако, я гуглил, но не нашел толкового ответаКак в Java перевести символ (char или даже лучше String)...

410
Использование Java

Использование Java

Доброго времени сутокПрошу компетентных людей объяснить, что можно написать на Java и как это должно работать

205