2017-06-26 5 views
0

Firebaseを初めて使用しました。AndroidでFirebaseにデータを追加できません(ルールはtrueに設定されています)

Firebaseデータベースにタイトルとテキストを追加しようとしています。書き込みと読み取りのルールをtrueに設定しました。
編集:
コピーは、別のAndroid Studioプロジェクトにこれと同じコードを貼り付けて、新しいFirebaseプロジェクトを設定し、自分の携帯電話にこのまったく同じコードを実行しました。 Firebaseデータベースにデータを追加しました。 私はそれが幸せか悲しいかどうかわかりません。

これは、データが送信されるからクラスです:

public class CreateActivity extends AppCompatActivity { 

    FirebaseDatabase mFirebaseDatabase; 
    DatabaseReference mDatabaseReference; 
    EditText titleText; 
    EditText postText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_create); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     setTitle(""); 
     titleText = (EditText) findViewById(R.id.create_title); 
     postText = (EditText) findViewById(R.id.create_text); 
     mFirebaseDatabase = FirebaseDatabase.getInstance(); 
     mDatabaseReference = mFirebaseDatabase.getReference().child("PostsText"); 

     Button postButton = (Button) findViewById(R.id.create_button); 

     postButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       if(titleText!=null && postText!=null) { 
        TextPost textPost = new TextPost(titleText.getText().toString(),postText.getText().toString()); 
        mDatabaseReference.push().setValue(textPost).addOnCompleteListener(new OnCompleteListener<Void>() 
        { 
         @Override 
         public void onComplete(@NonNull Task<Void> task) { 
          if(task.isSuccessful()){ 
           Toast.makeText(CreateActivity.this,"Yes!",Toast.LENGTH_SHORT).show(); 
          } 
          else 
          { 
           Toast.makeText(CreateActivity.this,"No!",Toast.LENGTH_SHORT).show(); 
          } 
         } 
        }); 
        titleText.setText(""); 
        postText.setText(""); 
        Toast.makeText(CreateActivity.this,"Post uploaded!",Toast.LENGTH_SHORT).show(); 
       } 

       else 
       { 
        Toast.makeText(CreateActivity.this,"Empty fields!",Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 
    } 
} 

これは、そのオブジェクト私はFirebaseデータベースにプッシュしていTextPostでクラスである:私はCreateActivityを実行すると

public class TextPost { 
    String title; 
    String text; 

    public TextPost() { 
    } 

    public TextPost(String title, String text) { 
     this.title = title; 
     this.text = text; 
    } 

    public String getTitle() { 
     return title; 
    } 

    public String getText() { 
     return text; 
    } 
} 

「Post」を押すと、「Post uploaded」というトーストがポップアップしますが、コンソールのFirebaseデータベースは「null」と表示されます。 また、「はい!」と言うトーストもあります。または "いいえ!"ポップアップしない!

私のアプリケーションフォルダにgoogle-services.jsonファイルも追加しました。ここで

は、CreateActivityを開くタイトルとテキストを入力し、ポストをクリックした後に私のログです:

06-27 00:45:09.323 24528-24528/com.android.example.prototype I/ViewRootImpl: finishMotionEvent: handled = true stage=10: View Post IME stage,inputElapseTime=12 eventTime = 648344822 downTime = 648344822 title= com.android.example.prototype/com.android.example.prototype.CreateActivity 
06-27 00:45:10.850 24528-24553/com.android.example.prototype W/DynamiteModule: Local module descriptor class for com.google.firebase.auth not found. 
06-27 00:45:12.737 24528-24528/com.android.example.prototype I/ViewRootImpl: finishMotionEvent: handled = true stage=10: View Post IME stage,inputElapseTime=13 eventTime = 648348239 downTime = 648348239 title= com.android.example.prototype/com.android.example.prototype.CreateActivity 

誰かが私はこの1つを把握助けてくださいことはできますか? 詳細情報が必要な場合はお知らせください。

マイbuild.gradleの依存関係は、以下のとおりです。

compile 'com.android.support:appcompat-v7:25.3.1' 
compile 'com.android.support.constraint:constraint-layout:1.0.2' 
compile 'com.android.support:design:25.3.1' 
compile 'com.android.support:cardview-v7:25.3.1' 
compile 'com.android.support:recyclerview-v7:25.3.1' 
compile 'com.daprlabs.aaron:swipedeck:2.0.6' 
compile 'com.squareup.picasso:picasso:2.5.2' 
compile 'com.android.support:support-v4:25.3.1' 
compile 'me.grantland:autofittextview:0.2.+' 
compile 'com.android.support:multidex:1.0.1' 
compile 'com.google.firebase:firebase-auth:10.0.1' 
compile 'com.google.firebase:firebase-core:10.0.1' 
compile 'com.google.firebase:firebase-database:10.0.1' 
testCompile 'junit:junit:4.12' 

This is my debug screen after getting a Database reference

デバッガが完全にaddOnCompleteListener方法をスキップして、空白にのTitleTextとpostTextの設定に直接行きます。 さらに深く掘り下げようとするべきことや、私が調べなければならない特定の変数について考えてみましょう。

+1

コードフローを把握するには、 'Log'文やデバッガを使うことを強くお勧めします。トーストは見逃せないことで有名です。それ以外では、アプリを実行するときに端末がインターネットに接続されていることを確認してください。 –

+0

@FrankvanPuffelenはい、投稿中にインターネット接続があります。 デバッガを試してみます。私は今これで何が間違っているのかを理解しようと、ほぼ2時間を費やしました。 –

+1

まあ、私はいつもあなたのようにどこにでも詰まっています。Log.i文をコードのどこにでも配置して、コードフローを見ていきます。私は一般的に私の間違いを見つける。また、トーストではなくフローをテストするためにLogを使用する方がはるかに優れています。 – Rishav

答えて

0

私はラップトップを再起動し、Firebaseデータベースに書き込もうとしました。出来た。 どう考えていますか。

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

関連する問題