Невозможно передать значение намерения следующему действию - PullRequest
1 голос
/ 19 февраля 2020

У меня проблема с передачей значений намерений следующему действию.

При создании профиля я создал две ссылки на базу данных 1. с pushid 2. без pu sh id

Теперь я пытаюсь передать значения из databaseref с помощью pushid

Мой код выглядит так

        mDatabaseReference = mDatabase!!.reference.child("Tokens").child(userId).push()

для хранения значения ключа pu sh id, я использовал переменную, как показано ниже, один

        var tokenID: String = mDatabaseReference!!.key!!

до pu sh это значение для намерения, я использовал

        intent.putExtra(TOKENID,tokenID)

, когда я использовал журнал, я вижу значение pu sh id

TOKENID Я создал при начальной операции с сопутствующим объектом

Чтобы передать это значение pu sh id следующей активности

        tokenreq = intent.getStringExtra(Profile.TOKENID)

для получения значений, которые я использовал ниже databasereference

mDatabaseReference = mDatabase!!.reference.child("Tokens").child(userId).child(tokenreq!!)

когда я запускаю программу, приложение cra sh упомянул KotlinNullPointerException для tokenreq в данных журнала

файл журнала

    kotlin.KotlinNullPointerException
    at com.luvpi.luvproject.activities.Verification$onCreate$2.onClick(Verification.kt:96)
    at android.view.View.performClick(View.java:5612)
    at android.view.View$PerformClick.run(View.java:22288)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6123)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

полный код для процесса

            checkcode.setOnClickListener {
            val userId = FirebaseAuth.getInstance().currentUser!!.uid

            mDatabase = FirebaseDatabase.getInstance()

            Log.d(TAG,"Push id is $tokenrequest")

            mDatabaseReference = mDatabase!!.reference.child("Tokens").child(userId).child(tokenrequest!!)


            mDatabaseReference!!.addListenerForSingleValueEvent(object :ValueEventListener{
                override fun onCancelled(databaseError: DatabaseError) {
                }

                override fun onDataChange(dataSnapshot: DataSnapshot) {

                    var tokenkey = dataSnapshot.child("tokenid").value.toString()

                    Log.d(TAG,"Verification Code is $tokenkey")

                    if (tokenkey == userverify.toString()) {

                        Toast.makeText(this@Verification, "Successfully Verified", Toast.LENGTH_LONG)
                            .show()
                        startActivity(Intent(this@Verification, LatestMessage::class.java))
                    } else {
                        Toast.makeText(this@Verification, "Verification code is incorrect", Toast.LENGTH_LONG).show()
                        return
                    }
                }

            })

        }

1 Ответ

0 голосов
/ 19 февраля 2020

Ваш reqToken не ребенок. Это должно быть значение. Так что вы должны использовать это для mDatabaseReference;

mDatabaseReference = mDatabase!!.reference.child("Tokens").child(userId)

Второй шаг;

mDatabaseReference.setValue(reqToken)

Третий шаг;

val valueEventListenerUser2 = object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        var tokenreq = dataSnapshot.getValue(String::class.java)!!
    }

    override fun onCancelled(databaseError: DatabaseError) {
    }
}
mDatabaseReference.addValueEventListener(valueEventListenerUser2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...