Home > front end >  Unable to start activity ComponentInfo java.lang.IllegalArgumentException: Given String is empty or
Unable to start activity ComponentInfo java.lang.IllegalArgumentException: Given String is empty or

Time:01-19

My application crashes while opening "Room Activity". I have attached my manifest as well as both the activities and logcat result. I don't understand what's the real problem here. I have made changes according to the articles online but still getting same error.

Android Mainfest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.tictactoe">

    <uses-permission android:name="android.permission.INTERNET"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.TicTacToe">
        <activity android:name=".OnlineGameActivity"></activity>
        <activity android:name=".RoomActivity" />
        <activity android:name=".FriendsActivity" />
        <activity android:name=".ComputerActivity" />
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Room Activity File

package com.example.tictactoe

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.database.FirebaseDatabase
import kotlinx.android.synthetic.main.activity_room.*


class RoomActivity : AppCompatActivity() {

    var mAuth: FirebaseAuth?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_room)
        mAuth = FirebaseAuth.getInstance()
        buLoginEvent()
    }

    fun buLoginEvent(){
       LoginToFirebase(email.text.toString(), password.text.toString());

    }

    fun LoginToFirebase(email:String, password:String){


        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        var currentUser = mAuth!!.currentUser
        mAuth!!.createUserWithEmailAndPassword(email,password)
            .addOnCompleteListener(this){
                task->
                if(task.isSuccessful){
                    Toast.makeText(applicationContext,"Successfull Login", Toast.LENGTH_LONG).show()
                    //saving in database
                    myRef.child("Users").child(splitString(currentUser!!.email.toString())).setValue(
                        currentUser!!.uid
                    )//creating current node iin relatime database
                    LoadMain()
                }
                else{
                    Toast.makeText(applicationContext,"Failed Login", Toast.LENGTH_LONG).show()
                }
            }

    }

    override fun onStart() {//2nd time when the application is started then call this method
        super.onStart()
        LoadMain()
    }
    fun  LoadMain(){
        var currentUser = mAuth!!.currentUser

        if(currentUser!=null) {// doing this only when the user is not null


            var intent = Intent(this, OnlineGameActivity::class.java)
            intent.putExtra("email", currentUser!!.email)
            intent.putExtra("uid", currentUser!!.uid)

            startActivity(intent)
            finish()
        }
        else{

        }
    }
    fun splitString(str:String):String{
        var split=str.split("@")
        return split[0]
    }
}

OnlineGameActivity

package com.example.tictactoe

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button



import com.google.firebase.analytics.FirebaseAnalytics
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import kotlinx.android.synthetic.main.activity_online_game.*
import kotlin.collections.HashMap




class OnlineGameActivity : AppCompatActivity() {
    //database instance


    var myEmail:String?=null

    private var mFirebaseAnalytics: FirebaseAnalytics?=null
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_online_game)
        mFirebaseAnalytics= FirebaseAnalytics.getInstance(this)

        IncommingCalls()
    }


    protected  fun buClick(view: View){
        val buSelected= view as Button
        var cellID=0
        when(buSelected.id){
            R.id.bu1-> cellID=1
            R.id.bu2-> cellID=2
            R.id.bu3-> cellID=3
            R.id.bu4-> cellID=4
            R.id.bu5-> cellID=5
            R.id.bu6-> cellID=6
            R.id.bu7-> cellID=7
            R.id.bu8-> cellID=8
            R.id.bu9-> cellID=9

        }
        // Toast.makeText(this,"ID:"  cellID, Toast.LENGTH_LONG).show()
        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        myRef.child("PlayerOnline").child(sessionID!!).child(cellID!!.toString()).setValue(myEmail)
    }

    var player1= java.util.ArrayList<Int>()
    var player2= java.util.ArrayList<Int>()
    var ActivePlayer=1

    fun PlayGame(cellID:Int,buSelected:Button){

        if(ActivePlayer==1){
            buSelected.text="X"
            //buSelected.setBackgroundResource(R.color.blue)
            player1.add(cellID)
            ActivePlayer=2

        }else{
            buSelected.text="O"
           // buSelected.setBackgroundResource(R.color.darkgreen)
            player2.add(cellID)
            ActivePlayer=1
        }


        buSelected.isEnabled=false
        CheckWiner()
    }



    fun  CheckWiner(){
        var winer=-1

        // row 1
        if(player1.contains(1) && player1.contains(2) && player1.contains(3)){
            winer=1
        }
        if(player2.contains(1) && player2.contains(2) && player2.contains(3)){
            winer=2
        }


        // row 2
        if(player1.contains(4) && player1.contains(5) && player1.contains(6)){
            winer=1
        }
        if(player2.contains(4) && player2.contains(5) && player2.contains(6)){
            winer=2
        }




        // row 3
        if(player1.contains(7) && player1.contains(8) && player1.contains(9)){
            winer=1
        }
        if(player2.contains(7) && player2.contains(8) && player2.contains(9)){
            winer=2
        }



        // col 1
        if(player1.contains(1) && player1.contains(4) && player1.contains(7)){
            winer=1
        }
        if(player2.contains(1) && player2.contains(4) && player2.contains(7)){
            winer=2
        }



        // col 2
        if(player1.contains(2) && player1.contains(5) && player1.contains(8)){
            winer=1
        }
        if(player2.contains(2) && player2.contains(5) && player2.contains(8)){
            winer=2
        }


        // col 3
        if(player1.contains(3) && player1.contains(6) && player1.contains(9)){
            winer=1
        }
        if(player2.contains(3) && player2.contains(6) && player2.contains(9)){
            winer=2
        }


        if( winer != -1){

            if (winer==1){
                android.widget.Toast.makeText(this," Player 1  win the game", android.widget.Toast.LENGTH_LONG).show()
            }else{
                android.widget.Toast.makeText(this," Player 2  win the game", android.widget.Toast.LENGTH_LONG).show()

            }

        }

    }


    fun AutoPlay(cellID:Int){



        var buSelect:Button?
        when(cellID){
            1-> buSelect=bu1
            2-> buSelect=bu2
            3-> buSelect=bu3
            4-> buSelect=bu4
            5-> buSelect=bu5
            6-> buSelect=bu6
            7-> buSelect=bu7
            8-> buSelect=bu8
            9-> buSelect=bu9
            else->{
                buSelect=bu1
            }
        }

        PlayGame(cellID,buSelect)

    }



    protected fun buRequestEvent(view:android.view.View){
        var userDemail=etEmail!!.text.toString()
        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        myRef.child("Users").child(SplitString(userDemail)).child("Request").push().setValue(myEmail)


        PlayerOnline(SplitString(myEmail!!)  SplitString(userDemail)) // husseinjena
        PlayerSymbol="X"
    }

    protected fun buAcceptEvent(view:android.view.View){
        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        var userDemail=etEmail!!.text.toString()//push will create another node with random id
        myRef.child("Users").child( SplitString(userDemail)).child("Request").push().setValue(myEmail)


        PlayerOnline(SplitString(userDemail) SplitString(myEmail!!)) //husseinjena
        PlayerSymbol="O"

    }

    var sessionID:String?=null
    var PlayerSymbol:String?=null
    fun PlayerOnline(sessionID:String){
        this.sessionID=sessionID
        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        myRef.child("PlayerOnline").removeValue()
        myRef.child("PlayerOnline").child(sessionID)
            .addValueEventListener(object:ValueEventListener{
                override fun onDataChange(dataSnapshot: DataSnapshot) {
                    try{
                        player1.clear()
                        player2.clear()
                        val td=dataSnapshot!!.value as HashMap<String,Any>
                        if(td!=null){

                            var value:String
                            for (key in td.keys){
                                value= td[key] as String

                                if(value!= myEmail){
                                    ActivePlayer= if(PlayerSymbol==="X") 1 else 2
                                }else{
                                    ActivePlayer= if(PlayerSymbol==="X") 2 else 1
                                }

                                AutoPlay(key.toInt())


                            }

                        }

                    }catch (ex:Exception){}
                }

                override fun onCancelled(p0: DatabaseError) {

                }

            })

    }



    var number=0
    fun IncommingCalls(){
        var database = FirebaseDatabase.getInstance()
        var myRef = database?.reference
        myRef.child("Users").child(SplitString(myEmail!!)).child("Request")
            .addValueEventListener(object:ValueEventListener{

                override fun onDataChange(dataSnapshot: DataSnapshot) {



                    try{
                        val td=dataSnapshot!!.value as HashMap<String,Any>
                        if(td!=null){

                            var value:String
                            for (key in td.keys){
                                value= td[key] as String
                                etEmail.setText(value)

                                val notifyme=Notifications()
                                notifyme.Notify(applicationContext,value   "want to play tic tac toe",number)
                                number  
                                myRef.child("Users").child(SplitString(myEmail!!)).child("Request").setValue(true)

                                break

                            }

                        }

                    }catch (ex:Exception){}
                }

                override fun onCancelled(p0: DatabaseError) {

                }

            })
    }


    fun  SplitString(str:String):String{
        var split=str.split("@")
        return split[0]
    }
}

Error that I am getting on logcat

2022-01-19 12:45:03.601 30370-30370/com.example.tictactoe E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.tictactoe, PID: 30370
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tictactoe/com.example.tictactoe.RoomActivity}: java.lang.IllegalArgumentException: Given String is empty or null
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3616)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3780)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2251)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:233)
        at android.app.ActivityThread.main(ActivityThread.java:8068)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
     Caused by: java.lang.IllegalArgumentException: Given String is empty or null
        at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@18.0.0:2)
        at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@21.0.1:1)
        at com.example.tictactoe.RoomActivity.LoginToFirebase(RoomActivity.kt:33)
        at com.example.tictactoe.RoomActivity.buLoginEvent(RoomActivity.kt:23)
        at com.example.tictactoe.RoomActivity.onCreate(RoomActivity.kt:19)
        at android.app.Activity.performCreate(Activity.java:8006)
        at android.app.Activity.performCreate(Activity.java:7990)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3589)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3780) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2251) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:233) 
        at android.app.ActivityThread.main(ActivityThread.java:8068) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978) 

CodePudding user response:

As you can see in the logs, your email or password is null or empty when you call createUserWithEmailAndPassword.

Take look at the logs, and try to debug your code to see if the values for email and password not null or empty.

Caused by: java.lang.IllegalArgumentException: Given String is empty or null
    at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@18.0.0:2)
    at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@21.0.1:1)

CodePudding user response:

As I get your stacktrace, you are passing empty strings into createUserWithEmailAndPassword method. It seems it doesn't allow that.

I recommend you to add checks into buLoginEvent method:

fun buLoginEvent(){
   val emailString = email.text.toString()
   val passwordString = password.text.toString()
   if(emailString.isNotEmpty() && passwordString.isNotEmpty()) {
       LoginToFirebase(emailString, passwordString);
   } else {
       //show error message to user
   }
}

CodePudding user response:

  • mAuth!!.createUserWithEmailAndPassword(email,password) maybe your email or password is null.
Caused by: java.lang.IllegalArgumentException: Given String is empty or null
       at com.google.android.gms.common.internal.Preconditions.checkNotEmpty(com.google.android.gms:play-services-basement@@18.0.0:2)
       at com.google.firebase.auth.FirebaseAuth.createUserWithEmailAndPassword(com.google.firebase:firebase-auth@@21.0.1:1)
  •  Tags:  
  • Related