2017-09-06 5 views
0

MainActivityファイルに送り込ま取得されていない私はfirebaseとAndroidを使用してデータベースにデータを入力しようとしていますが、データはデータベース

私MainActivityを取り付けることはバグがあるアプリが構築されている見つける..can't正常にデータがデータベースに表示されていませんまた、データベースへの便利なアクセス許可は、すべてのユーザーに付与されている後に変更することができます...助けてください...

私のMainActivity ..アプリケーションが正常に構築されているが、データがデータベースに表示されていないバグです。また、データベースへのアクセス許可がすべてのユーザーに許可されている場合は、Laターが

package com.google.firebase.udacity.friendlychat; 

    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.text.Editable; 
    import android.text.InputFilter; 
    import android.text.TextWatcher; 
    import android.view.Menu; 
    import android.view.MenuInflater; 
    import android.view.MenuItem; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.EditText; 
    import android.widget.ImageButton; 
    import android.widget.ListView; 
    import android.widget.ProgressBar; 

    import com.google.firebase.database.DatabaseReference; 
    import com.google.firebase.database.FirebaseDatabase; 

    import java.util.ArrayList; 
    import java.util.List; 

    public class MainActivity extends AppCompatActivity { 

     private static final String TAG = "MainActivity"; 

     public static final String ANONYMOUS = "anonymous"; 
     public static final int DEFAULT_MSG_LENGTH_LIMIT = 1000; 

     private ListView mMessageListView; 
     private MessageAdapter mMessageAdapter; 
     private ProgressBar mProgressBar; 
     private ImageButton mPhotoPickerButton; 
     private EditText mMessageEditText; 
     private Button mSendButton; 

     private String mUsername; 

     private FirebaseDatabase mFirebaseDatabase;//firebase database object.It is an entry point to access the database 
     private DatabaseReference mMessagesDatabaseReference;//is a class that references the specific part of the database.it will be referencring the messaging portion of the database 


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

      mUsername = ANONYMOUS; 

      // mFirebaseDatabase=FirebaseDatabase.getInstance();//main access for our database 
      //mMessagesDatabaseReference=mFirebaseDatabase.getReference().child("messages");//using this we are getting the acess to messages section of the database 
      mFirebaseDatabase = FirebaseDatabase.getInstance(); 
      mMessagesDatabaseReference = mFirebaseDatabase.getReference().child("messages"); 

      // Initialize references to views 
      mProgressBar = (ProgressBar) findViewById(R.id.progressBar); 
      mMessageListView = (ListView) findViewById(R.id.messageListView); 
      mPhotoPickerButton = (ImageButton) findViewById(R.id.photoPickerButton); 
      mMessageEditText = (EditText) findViewById(R.id.messageEditText); 
      mSendButton = (Button) findViewById(R.id.sendButton); 

      // Initialize message ListView and its adapter 
      List<FriendlyMessage> friendlyMessages = new ArrayList<>(); 
      mMessageAdapter = new MessageAdapter(this, R.layout.item_message, friendlyMessages); 
      mMessageListView.setAdapter(mMessageAdapter); 

      // Initialize progress bar 
      mProgressBar.setVisibility(ProgressBar.INVISIBLE); 

      // ImagePickerButton shows an image picker to upload a image for a message 
      mPhotoPickerButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        // TODO: Fire an intent to show an image picker 
       } 
      }); 

      mSendButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        //Send messages on click 
        //FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), mUsername, null); 
        //mMessagesDatabaseReference.push().setValue(friendlyMessage); 
        //above statement is used to send the data to the cloud 

        FriendlyMessage friendlyMessage = new FriendlyMessage(mMessageEditText.getText().toString(), mUsername, null); 
        mMessagesDatabaseReference.push().setValue(friendlyMessage); 


        // Clear input box 
        mMessageEditText.setText(""); 
       } 
      }); 
      // Enable Send button when there's text to send 
      mMessageEditText.addTextChangedListener(new TextWatcher() { 
       @Override 
       public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
       } 

       @Override 
       public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) { 
        if (charSequence.toString().trim().length() > 0) { 
         mSendButton.setEnabled(true); 
        } else { 
         mSendButton.setEnabled(false); 
        } 
       } 

       @Override 
       public void afterTextChanged(Editable editable) { 
       } 
      }); 
      mMessageEditText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(DEFAULT_MSG_LENGTH_LIMIT)}); 

      // Send button sends a message and clears the EditText 
      mSendButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        // TODO: Send messages on click 

        // Clear input box 
        mMessageEditText.setText(""); 
       } 
      }); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.main_menu, menu); 
      return true; 
     } 

     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 
      return super.onOptionsItemSelected(item); 
     } 
    } 
+0

あなたは、コードをデバッグがありますか?一般に、デバッグはアプリケーションがどこに壊れているかを明らかにします。 –

+0

権限が拒否されました。しかし、デフォルトでは、すべてのユーザーに読み取りと書き込みのアクセス権が与えられています – hatim

+0

それはデータベースユーザーの問題でありコードではないように私に聞こえます。あなたのアプリケーションが使用していることを確認し、DBにアクセスする権限があるかどうかを確認しようとします。 –

答えて

0

https://firebase.google.com/docs/android/setup

やAndroid Studioので、最新のガイドに従ってください、あなたはセットアップに必要な依存関係を持っていることを確認してください助けてください...変更することができ、あなただけでアプリをインポートすることができますツール - > Firebase - > [ex。リアルタイムデータベース] [import app using android studio's built-in tool]データベースルールで1

{ "rules": { ".read": "auth==null", ".write": "auth==null" } } 

は、すべてのユーザーに付与するものではありませんが、このルールは、単に認証されていないユーザーの読み取り/書き込みを許可します。

ソリューション:(あなたがFirebase認証を使用するまで)テストのみ、trueに読み取り/書き込みルールを設定

{ ".read" : "true", ".write": "true"} 
+0

いいえ、うまくいきません.... – hatim

+0

アンドロイドスタジオにインポートする必要のある設定や、追加する必要がある依存関係はありますか? – hatim

+0

はい、設定や依存関係は必要ですが、セットアップは完了しましたか? https://firebase.google.com/docs/android/setup –

関連する問題