Пытаюсь реализовать платное удаление рекламы. Для платежей использую эту библиотеку .
Создал активити, в котором пользователь производит оплату, после чего записывается переменная 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
в другие активити?
Трогать конструкторы фрагментов и активити нельзя - система будет кидать исключения. Это произойдёт потому что система сама создаёт экземпляры этих классов и сама ими манипулирует для поддержания жизненного цикла.
Могу посоветовать сделать иначе - при успешной покупке записать в SharedPreferences
boolean
значение и его получать в других активити.
Либо запускать активити с покупками через startActivityForResult
- тогда в вызвавшей активити буедт вызван после завершения покупки метод onActivityResult
и в нём вы можете получить результат переданный из запускаемой активити.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть EditText надо сделать чтоб у него было нижнее подчеркивание и при вводе цифр каждое подчеркивание заполнялось выбранным симваломКак такое...
Ребят, вопрос, в принципе, не такой и сложный, однако, я гуглил, но не нашел толкового ответаКак в Java перевести символ (char или даже лучше String)...
Доброго времени сутокПрошу компетентных людей объяснить, что можно написать на Java и как это должно работать