我试图捕获当前时间以开始计算VIP会员的天数,并将时间保存在Firebase数据库中。为此,我正在使用以下代码。
Date now = new Date();
DateFormat df = new SimpleDateFormat("dd MM YYYY");
但是当我单击购买按钮时应用程序崩溃.logcat给我这行的编号。当我对此行发表评论时未发生错误。
感谢您的帮助。
完整代码
package com.app.surebettips;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.anjlab.android.iab.v3.BillingProcessor;
import com.anjlab.android.iab.v3.TransactionDetails;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Buy extends AppCompatActivity implements BillingProcessor.IBillingHandler {
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference();
Button binkredi;
Button yuzkredib;
Button ikiyuzkredib;
Button besyuzkredi;
Button vip;
Button trydemobuy;
BillingProcessor bp;
String key = "...";
ImageView imageview6;
private FirebaseAuth mAuth;
Intent intent;
int kredi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_buy);
intent = getIntent();
kredi = intent.getIntExtra("kredisi",0);
Toast.makeText(getApplicationContext(),getResources().getString(R.string.buyerror),Toast.LENGTH_LONG).show();
mAuth = FirebaseAuth.getInstance();
imageview6 = findViewById(R.id.imageView6);
try {
imageview6.setImageDrawable(ContextCompat.getDrawable(getApplicationContext(), R.drawable.arkaplan));
} catch (Exception e) {
Toast.makeText(getApplicationContext(), "Arka plan, cihazınızda desteklenmediği için düz renk olarak atanmıştır", Toast.LENGTH_LONG).show();
}
bp = new BillingProcessor(this, key, this);
//bp = new BillingProcessor(this, null, this);
binkredi = findViewById(R.id.binkredi);
yuzkredib = findViewById(R.id.yuzkredi);
ikiyuzkredib = findViewById(R.id.ikiyuzkredi);
besyuzkredi = findViewById(R.id.besyuzkredi);
vip = findViewById(R.id.vip);
trydemobuy = findViewById(R.id.keko);
binkredi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(Buy.this, "binkredi");
bp.consumePurchase("binkredi");
}
});
yuzkredib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(Buy.this, "yuzkredi");
bp.consumePurchase("yuzkredi");
}
});
ikiyuzkredib.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(Buy.this, "ikiyuzkredi");
bp.consumePurchase("ikiyuzkredi");
}
});
besyuzkredi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(Buy.this, "besyuzkredi");
bp.consumePurchase("besyuzkredi");
}
});
vip.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bp.purchase(Buy.this, "vip");
bp.consumePurchase("vip");
}
});
trydemobuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString(50000));
Date now = new Date();
DateFormat df = new SimpleDateFormat("dd MM YYYY");
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("VIP Üyelik Başlangıcı").setValue(df.format(now));
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("VIP").setValue("Evet");
Toast.makeText(Buy.this, "IP account enabled", Toast.LENGTH_SHORT).show();
//startActivity(new Intent(getApplicationContext(), AnaEkran.class));
}
});
}
@Override
public void onProductPurchased(@NonNull String productId, @Nullable TransactionDetails details) {
if (productId.toString().equals("binkredi")) {
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString((kredi + 1000)));
startActivity(new Intent(getApplicationContext(), AnaEkran.class));
} else if (productId.toString().equals("yuzkredi")) {
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString((kredi +100)));
startActivity(new Intent(getApplicationContext(), AnaEkran.class));
} else if (productId.toString().equals("ikiyuzkredi")) {
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString((kredi + 200)));
startActivity(new Intent(getApplicationContext(), AnaEkran.class));
} else if (productId.toString().equals("besyuzkredi")) {
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString((kredi + 500)));
startActivity(new Intent(getApplicationContext(), AnaEkran.class));
} else if (productId.toString().equals("vip")) {
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("Kredi").setValue(Integer.toString(50000));
//Toast.makeText(getApplicationContext(), "VIP account enabled", Toast.LENGTH_LONG).show();
Date now = new Date();
DateFormat df = new SimpleDateFormat("dd MM YYYY");
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("VIP Üyelik Başlangıcı").setValue(df.format(now));
myRef.child("Kullanıcılar").child(mAuth.getCurrentUser().getUid()).child("VIP").setValue("Evet");
startActivity(new Intent(getApplicationContext(), AnaEkran.class));
}
}
@Override
public void onPurchaseHistoryRestored() {
}
@Override
public void onBillingError(int errorCode, @Nullable Throwable error) {
}
@Override
public void onBillingInitialized() {
}
}
答案 0 :(得分:0)
您应该使用小写字母作为年份。因此,请使用YYYY
而不是yyyy
。因此,您的代码应如下所示:
DateFormat df = new SimpleDateFormat("dd MM yyyy");