首页 > 解决方案 > 在 Firebase 功能上保存当前时间不起作用

问题描述

我试图抓住当前时间开始计算贵宾会员的天数。我将时间保存在 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() {

    }
}

标签: javaandroid

解决方案


您应该在一年中使用小写字母。所以,而不是YYYY,使用yyyy. 因此,您的代码应如下所示:

DateFormat df = new SimpleDateFormat("dd MM yyyy");

推荐阅读