首页 > 解决方案 > 在我的项目中实施县代码选择器时出错

问题描述

您好,我是 java 初学者,我正在尝试为学校项目创建国家代码选择器。我已经创建了它添加了代码,但是当我运行应用程序时,它以启动画面开始,然后崩溃。我已经尝试了几乎所有方法,但仍然无法正常工作。我做错了什么,我应该怎么做

这是我的代码。

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.content.Intent;
import android.os.Bundle;
import android.text.InputFilter;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.FirebaseException;
import com.google.firebase.FirebaseTooManyRequestsException;
import com.google.firebase.auth.AuthResult;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseAuthInvalidCredentialsException;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.auth.PhoneAuthCredential;
import com.google.firebase.auth.PhoneAuthProvider;
import com.hbb20.CountryCodePicker;

import java.util.concurrent.TimeUnit;

public class PhoneNumber extends AppCompatActivity {
    private static final String TAG = "PhoneAuth";


    public EditText phonenumber;
    public Button nextButton;
    public FirebaseAuth fbAuth;


    private String phoneVerificationId;
    private PhoneAuthProvider.OnVerificationStateChangedCallbacks verificationCallbacks;
    private PhoneAuthProvider.ForceResendingToken resendToken;

    CountryCodePicker ccp;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_phone_number);

        //Country Code Picker
        ccp = findViewById(R.id.countrycodepicker);
        ccp.registerCarrierNumberEditText(phonenumber);

        //Define Views Here
        nextButton = findViewById(R.id.nextButton);
        phonenumber = findViewById(R.id.editTextPhonenumber);

        // Filter number of digits entered by the User
        InputFilter[] filters = new InputFilter[1];
        filters[0] = new InputFilter.LengthFilter(10); //Filter to 10 characters
        phonenumber.setFilters(filters);

        fbAuth = FirebaseAuth.getInstance();

        //Next Button On click Litsener.
        nextButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                attemptLogin();
            }





        });


    }
     public void attemptLogin(){

        // set Errors
         phonenumber.setError(null);

         //get Phone number
         ccp.registerCarrierNumberEditText(phonenumber);

         Log.i ("Phone Number", ccp.getFullNumber());

    }
}

这是电话号码活动的 XML,用户将在其中添加他们的电话号码并选择他们的国家代码。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".PhoneNumber">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline39"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline40"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline41"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="1" />


    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline31"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.15" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline32"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.85" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline33"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.4" />


    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline34"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.5" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline35"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.6" />


    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline36"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_end="233dp" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline37"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_end="146dp" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline38"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="1" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/guideline42"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="20dp"
        app:layout_constraintGuide_percent="0.35" />


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="542dp"
        android:layout_height="366dp"
        app:layout_constraintBottom_toTopOf="@+id/guideline33"
        app:layout_constraintEnd_toStartOf="@+id/guideline41"
        app:layout_constraintStart_toStartOf="@+id/guideline40"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/top2" />

    <ImageView
        android:id="@+id/imageView7"
        android:layout_width="137dp"
        android:layout_height="179dp"
        app:layout_constraintBottom_toTopOf="@+id/guideline33"
        app:layout_constraintEnd_toStartOf="@+id/guideline32"
        app:layout_constraintHorizontal_bias="0.496"
        app:layout_constraintStart_toStartOf="@+id/guideline31"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.298"
        app:srcCompat="@drawable/ghc_logo_white" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fontFamily="sans-serif"
        android:text="VERIFY PHONE NUMBER"
        android:textColor="#000"
        android:textSize="18sp"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/guideline34"
        app:layout_constraintEnd_toStartOf="@+id/guideline32"
        app:layout_constraintStart_toStartOf="@+id/guideline31"
        app:layout_constraintTop_toTopOf="@+id/guideline33" />


    <com.hbb20.CountryCodePicker
        android:id="@+id/countrycodepicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintBottom_toTopOf="@+id/guideline35"
        app:layout_constraintEnd_toStartOf="@+id/editTextPhonenumber"
        app:layout_constraintHorizontal_bias="0.833"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/guideline34"
        app:layout_constraintVertical_bias="0.28"

        />

    <EditText
        android:id="@+id/editTextPhonenumber"
        android:layout_width="184dp"
        android:layout_height="44dp"
        android:ems="10"
        android:inputType="phone"
        app:layout_constraintBottom_toTopOf="@+id/guideline35"
        app:layout_constraintEnd_toStartOf="@+id/guideline41"
        app:layout_constraintHorizontal_bias="0.493"
        app:layout_constraintStart_toStartOf="@+id/guideline42"
        app:layout_constraintTop_toTopOf="@+id/guideline34"
        app:layout_constraintVertical_bias="0.241" />

    <TextView
        android:id="@+id/textView5"
        android:layout_width="276dp"
        android:layout_height="40dp"
        android:fontFamily="sans-serif"
        android:text="By clicking next you allow us to  send verification number Charges may apply"
        android:textColor="#000"
        android:textStyle="italic"
        app:layout_constraintBottom_toTopOf="@+id/guideline36"
        app:layout_constraintEnd_toStartOf="@+id/guideline41"
        app:layout_constraintHorizontal_bias="0.688"
        app:layout_constraintStart_toStartOf="@+id/guideline40"
        app:layout_constraintTop_toTopOf="@+id/guideline35"
        app:layout_constraintVertical_bias="0.1" />

    <Button
        android:id="@+id/nextButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="NEXT"
        android:textColor="#fff"
        android:textSize="18sp"
        android:background="@drawable/round"
        android:onClick="sendCode"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@+id/guideline37"
        app:layout_constraintEnd_toStartOf="@+id/guideline32"
        app:layout_constraintStart_toStartOf="@+id/guideline31"
        app:layout_constraintTop_toTopOf="@+id/guideline36" />
</androidx.constraintlayout.widget.ConstraintLayout>

这是运行应用程序后发生的错误。

2019-12-23 09:35:49.168 25311-25311/com.tibacare.tibahc E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.tibacare.tibahc, PID: 25311
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tibacare.tibahc/com.tibacare.tibahc.PhoneNumber}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.EditText.getHint()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2995)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3073)
        at android.app.ActivityThread.-wrap11(Unknown Source:0)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1774)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:198)
        at android.app.ActivityThread.main(ActivityThread.java:7055)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:523)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:836)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.EditText.getHint()' on a null object reference
        at com.hbb20.CountryCodePicker.setEditText_registeredCarrierNumber(CountryCodePicker.java:1130)
        at com.hbb20.CountryCodePicker.registerCarrierNumberEditText(CountryCodePicker.java:1738)
        at com.tibacare.tibahc.PhoneNumber.onCreate(PhoneNumber.java:55)
        at android.app.Activity.performCreate(Activity.java:7314)
        at android.app.Activity.performCreate(Activity.java:7305)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1215)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2948)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3073) 
        at android.app.ActivityThread.-wrap11(Unknown Source:0) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1774) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:198) 
        at android.app.ActivityThread.main(ActivityThread.java:7055) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:523) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:836) 
2019-12-23 09:35:49.205 25311-25311/com.tibacare.tibahc I/Process: Sending signal. PID: 25311 SIG: 9
"

标签: javaandroidfirebase

解决方案


推荐阅读