2017-10-04 9 views
15

私はAndroidベースのアプリケーションでFirebaseによってリリースされた新しいFirestoreを使用しようとしています。残念ながら、私はこのエラーをデータベースに書き込もうとしています。Firestore getProductIDはnullエラーではありません

public class MainActivity extends AppCompatActivity { 

EditText txtName,txtSurname; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    txtName = findViewById(R.id.Name); 
    txtSurname = findViewById(R.id.Surname); 

    FloatingActionButton fab = findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      FirebaseFirestore db = FirebaseFirestore.getInstance(); 

      Map<String, Object> user = new HashMap<>(); 
      user.put("first", "Ada"); 
      user.put("last", "Lovelace"); 
      user.put("born", 1815); 

      db.collection("users") 
        .add(user) 
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { 
         @Override 
         public void onSuccess(DocumentReference documentReference) { 
          //Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); 
         } 
        }) 
        .addOnFailureListener(new OnFailureListener() { 
         @Override 
         public void onFailure(@NonNull Exception e) { 
          //Log.w(TAG, "Error adding document", e); 
         } 
        }); 

     } 
    }); 
} 

これは私が得続けるエラーです。私はアシスタントを介して私のアンドロイドアプリにプロジェクトを追加しました。だから問題はないはずです。

プロセス:damn.testapp、PID:2622
java.lang.IllegalArgumentExceptionが:FirebaseOptions.getProjectId() com.google.firebase.firestore.FirebaseFirestore.zze(不明なソース)でnullにすることはできませんで damn.testapp.MainActivity $ 1.onClick(mainActivity.java:44) android.view.View.performClick(View.java:5637)at com.google.firebase.firestore.FirebaseFirestore.getInstance(不明な ソース) android.view.View $ PerformClick.run(View.java:22429)at android.os.Handler.handleCallback(Handler.java:751) android.os.Hand ler.dispatchMessage(Handler.java:95)at android.os.Looper.loop(Looper.java:154)at android.app.ActivityThread.main(ActivityThread.java:6119)at java.lang.reflect。 Method.invoke(ネイティブメソッド)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

ご協力いただければ幸いです。ここで

は、データベース

service cloud.firestore { 
    match /databases/{database}/documents { 
match /{document=**} { 
    allow read, write; 
    } 
    } 
} 

のための私のセキュリティルールであり、これは私が使用しています依存関係です:

compile 'com.google.firebase:firebase-firestore:11.4.2' 

答えて

36

私は同じ問題を抱えていました。 はGradleの中でこれを解決: 3.0.0

buildscript { 
    dependencies { 
     classpath 'com.google.gms:google-services:3.1.0' 
    } 
} 
+0

でした!ありがとうございました!!! –

+0

ありがとう、私のためにも働いた –

+0

どのようにこれを発見しましたか? – funkybro

0

これが問題を引き起こしています。代わりに

FirebaseFirestore db = FirebaseFirestore.getInstance(); 

、このようにそれを使用します。

private DocumentReference documentReference = FirebaseFirestore.getInstance().document("sampleData/myData"); 

そして、このようなデータを保存します。

Map<String, Object> user = new HashMap<>(); 
    user.put("first", "Ada"); 
    user.put("last", "Lovelace"); 
    user.put("born", 1815); 
    documentReference 
      .set(user).addOnSuccessListener(new OnSuccessListener<Void>() { 
     @Override 
     public void onSuccess(Void aVoid) { 
      Log.d("MainActivity", "DocumentSnapshot added with ID: " + documentReference.getId()); 
     } 
    }); 
+0

同じエラーが表示されます。 –

+0

Firebaseコンソールでデータベースセキュリティルールを変更し、Firestoreの依存関係を追加しましたか? –

+0

データベースの最新の依存関係とロックされていないセキュリティ規則があります。 –

2

は、Google-services.jsonファイルを持っている場合に、この障害が発生することがありますが、それはproject_infoセクションでproject_id鍵を持っていません。

これは、古いgoogle-services.jsonファイルを使用して既存のアプリにFirestoreを追加する場合に発生します。プロジェクトIDはFirestoreをサポートするために追加された、このファイルの比較的新しいフィールドです。

Firebaseコンソールにログインし、そこにあなたのアプリを見つけて、google-services.jsonファイルを再ダウンロードしてプロジェクトに置き換えてください。

+0

私はアプリをアンインストールし、データとキャッシュをクリアしました。それでも私に 'IllegalArgumentException:FirebaseOptions.getProjectId()をnullにすることはできません。 ' 私は私の' project_info'をチェックしています、それは正しい 'project_id'を持っています –

+0

あなたはgoogle-servicesプラグインをあなたのビルド? https://firebase.google.com/docs/android/setup?authuser=0#manually_add_firebase –

+0

の下部にある手順を参照してください。問題はGoogleサービスバージョンでした。私はちょうど '3.1.0'にアップグレードしました。その作業は –

0

3.1.0にsokarcreative答えは私のために働いていませんでした。私はこれをしました:

buildscript { 

    repositories { 
     google() 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.1' 
     classpath 'com.google.gms:google-services:3.1.1' 
    } 
} 

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

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

これは "null"値を含むキーを送信する際の問題です。キー値を空の文字列 ""で置き換えてみてください。

関連する問題