2017-10-13 21 views
-3

私はAndroid StudioとFirebaseを使用しています。エミュレータを実行すると、コードは新しいユーザーを作成していません。プログラムは、progressDialogで停止しています。「お待ちください」。 Firebaseで手動でユーザを追加できます。 Fireboothコンソールでメール/パスワードauthを有効にしましたが、依然としてprob21が存在します。ProgressDialogで終了したプログラム

これはMainActivity.javaファイルです。

package com.example.application.firebaseauthdemo; 

import android.app.ProgressDialog; 
import android.support.annotation.NonNull; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.text.TextUtils; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 
import com.google.android.gms.tasks.OnCompleteListener; 
import com.google.android.gms.tasks.Task; 
import com.google.firebase.auth.AuthResult; 
import com.google.firebase.auth.FirebaseAuth; 
import com.google.firebase.auth.FirebaseUser; 

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    //defining view objects 
    private EditText editTextEmail; 
    private EditText editTextPassword; 
    private Button buttonSignup; 
    private ProgressDialog progressDialog; 


    //defining firebaseauth object 
    private FirebaseAuth firebaseAuth; 

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

     //initializing firebase auth object 
     firebaseAuth = FirebaseAuth.getInstance(); 

     //initializing views 
     editTextEmail = (EditText) findViewById(R.id.editTextEmail); 
     editTextPassword = (EditText) findViewById(R.id.editTextPassword); 

     buttonSignup = (Button) findViewById(R.id.buttonSignup); 

     progressDialog = new ProgressDialog(this); 

     //attaching listener to button 
     buttonSignup.setOnClickListener(this); 
    } 

    private void registerUser(){ 

     //getting email and password from edit texts 
     String email = editTextEmail.getText().toString().trim(); 
     String password = editTextPassword.getText().toString().trim(); 

     //checking if email and passwords are empty 
     if(TextUtils.isEmpty(email)){ 
      Toast.makeText(this,"Please enter email",Toast.LENGTH_LONG).show(); 
      return; 
     } 

     if(TextUtils.isEmpty(password)){ 
      Toast.makeText(this,"Please enter password",Toast.LENGTH_LONG).show(); 
      return; 
     } 

     //if the email and password are not empty 
     //displaying a progress dialog 

     progressDialog.setMessage("Registering Please Wait..."); 
     progressDialog.show(); 

     //creating a new user 
     firebaseAuth.createUserWithEmailAndPassword(email, password) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         //checking if success 
         if(task.isSuccessful()){ 
          //display some message here 
          FirebaseUser user = firebaseAuth.getCurrentUser(); 
          Toast.makeText(MainActivity.this,"Successfully registered",Toast.LENGTH_LONG).show(); 
         }else{ 
          //display some message here 
          Toast.makeText(MainActivity.this,"Registration Error",Toast.LENGTH_LONG).show(); 
         } 
         progressDialog.dismiss(); 
        } 
       }); 

    } 

    @Override 
    public void onClick(View view) { 
     //calling register method on click 
     registerUser(); 
    } 
} 

(2)プロジェクト(build.gradle) file..I'veすでに追加クラスパス。

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.3' 
     classpath 'com.google.gms:google-services:3.1.0' 
     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

allprojects { 
    repositories { 
     jcenter() 
     maven { 
      url "https://maven.google.com" // Google's Maven repository 
     } 
    } 
} 

task clean(type: Delete) { 
    delete rootProject.buildDir 
} 

(3)アプリケーション(build.gradleファイル...ここでは、私はすべてのfirebaseの依存関係を追加しました。

apply plugin: 'com.android.application' 

android 
     { 
    compileSdkVersion 26 
    buildToolsVersion "26.0.1" 
    defaultConfig 
      { 
     applicationId "com.example.application.firebaseauthdemo" 
     minSdkVersion 15 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 

    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(include: ['*.jar'], dir: 'libs') 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
     exclude group: 'com.android.support', module: 'support-annotations' 
    }) 
    compile 'com.android.support:appcompat-v7:26.1.0' 
    compile 'com.android.support:animated-vector-drawable:26.1.0' 
    compile 'com.android.support:mediarouter-v7:26.1.0' 
    compile 'com.google.android.gms:play-services:11.0.4' 

    compile 'com.android.support.constraint:constraint-layout:1.0.2' 
    compile 'com.google.firebase:firebase-auth:11.0.4' 
    compile 'com.google.firebase:firebase-core:11.0.4' 
    compile 'com.google.firebase:firebase-crash:11.0.4' 
    compile 'com.google.firebase:firebase-messaging:11.0.4' 
    compile 'com.google.android.gms:play-services-maps:11.0.4' 
    compile 'com.google.android.gms:play-services-location:11.0.4' 
    testCompile 'junit:junit:4.12' 

} 
apply plugin: 'com.google.gms.google-services' 

すべての必要な依存関係を追加しました。また、Firebaseと同じクラスパスを追加しました。また、私はプロジェクトを掃除し、rebuildそれを掃除しました。しかし、まだ問題は解決できません。また、FirebaseコンソールでEmail/Password認証を有効にしました。アプリはまだprogressDialogに固執し続けており、ユーザーはFirebase authに登録することはできません。

+0

@UltimateDevil:コードではないものにインラインコードの書式を追加しないでください。 Firebaseは単なるブランドであり固有名詞なので、大文字が得られます。それだけです。ありがとう。 – halfer

+0

Shagun [より速い回答を得るために、どのような状況で私の質問に「緊急」や他の類似のフレーズを追加することができますか?](// meta.stackoverflow.com/q/326569) - 要約は、ボランティアに対処する理想的な方法ではなく、おそらく回答を得ることに逆効果があります。これをあなたの質問に追加しないでください。 – halfer

+1

オハイオ州のサー、@間違いがこの未来に再びないでしょう – UltimateDevil

答えて

0

読み込んだ作業のためにAsyncTaskを作成する必要があります。例については

AsyncTask<String, String, String> asyncTask = new AsyncTask() { 
      @Override 
      protected void onPreExecute() { 
       super.onPreExecute(); 
       progressDialog.setMessage("Registering Please Wait..."); 
       progressDialog.show(); 
      } 

      @Override 
      protected Object doInBackground(Object[] params) { 
       firebaseAuth.createUserWithEmailAndPassword(email, password) 
       .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
        @Override 
        public void onComplete(@NonNull Task<AuthResult> task) { 
         //checking if success 
         if(task.isSuccessful()){ 
          //display some message here 
          FirebaseUser user = firebaseAuth.getCurrentUser(); 
          Toast.makeText(MainActivity.this,"Successfully registered",Toast.LENGTH_LONG).show(); 
         }else{ 
          //display some message here 
          Toast.makeText(MainActivity.this,"Registration Error",Toast.LENGTH_LONG).show(); 
         } 

        } 
       }); 
       return null; 
      } 

      @Override 
      protected void onPostExecute(Object o) { 
       super.onPostExecute(o); 
       progressDialog.dismiss(); 
      } 
     }; 
     asyncTask.execute(); 
+0

まだ同じ問題... – Shagun

+0

は実行時例外を与えていますか? –

+0

no..itはエラーや例外を出すことはありません。ユーザーがfirebase authに追加されていないことだけです。progressDialogは「登録待ちです」と表示しています。 – Shagun

0

addOnCompleteListenerが呼び出されることはありませんので、あなたは、失敗しているかどうか確認するためにaddOnFailureListenerを追加する必要があります。

//creating a new user 
    firebaseAuth.createUserWithEmailAndPassword(email, password) 
      .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() { 
       @Override 
       public void onComplete(@NonNull Task<AuthResult> task) { 
        // YOUR CODE 
       } 
      }) 
      .addOnFailureListener(this, new OnFailureListener() { 
       @Override 
       public void onFailure(@NonNull Exception e) { 
        Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_SHORT).show(); 
      } 
     }); 
関連する問題