2017-03-16 9 views
0

以前に作成したデータを使用してFirebaseデータベースのデータが入力されているランディングページを作成しようとしています。私はここでMainActivityFireviewに保存されているデータでTextViewにTextViewが設定されていません

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 


private FirebaseAuth firebaseAuth; 
FirebaseDatabase firebaseDatabase; 
DatabaseReference databaseReference; 

private TextView userName; 

NavigationView navigationView = null; 
Toolbar toolbar = null; 


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


    //FIREBASE LOGGED IN CHECK 

    firebaseAuth = FirebaseAuth.getInstance(); 

    if(firebaseAuth.getCurrentUser() == null){ 
     finish(); 
     startActivity(new Intent(this, LoginActivity.class)); 
    } 

    FirebaseUser user = firebaseAuth.getCurrentUser(); 


    //Set the fragment initially 
    MainFragment fragment = new MainFragment(); 
    android.support.v4.app.FragmentTransaction fragmentTransaction = 
      getSupportFragmentManager().beginTransaction(); 
    fragmentTransaction.replace(R.id.fragment_container, fragment); 
    fragmentTransaction.commit(); 

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Nothing to see here, move along!", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 



    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 

    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
      this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close); 
    drawer.setDrawerListener(toggle); 
    toggle.syncState(); 

    navigationView = (NavigationView) findViewById(R.id.nav_view); 

    View headerView = navigationView.getHeaderView(0); 

    userName = (TextView) headerView.findViewById(R.id.textViewUserName); 


    //GET INSTANCE OF DATABASE FROM URL 
    firebaseDatabase = FirebaseDatabase.getInstance(); 
    databaseReference = firebaseDatabase.getReferenceFromUrl("https://userdata-57a47.firebaseio.com/"); 

    DatabaseReference mChild = databaseReference.getRef().child("name"); 

    mChild.addValueEventListener(new ValueEventListener() { 
     @Override 
     public void onDataChange(DataSnapshot dataSnapshot) { 

      String name = dataSnapshot.getValue(String.class); 

      userName.setText(name); 

     } 

     @Override 
     public void onCancelled(DatabaseError databaseError) { 

     } 
    }); 

私はIDを取得するためにDatabaseReferenceを使用しているのコードを使用していますし、それは私が出力にこの情報をしようとすると、プログラムのdoesnを使用してのTextViewに変換することによりしかし、動作しているようですTextviewテキストをデータベースの「名前」フィールドに置き換えているようです。

答えて

1

投稿後に自分の問題が解決しました。

私が置いた行の単純な修正。私は私が私のIDがgetRef()を参照していたと思った

DatabaseReference mChild = databaseReference.getRef().child("name"); 

使用する間違ったことです。代わりに私は.getUid()を使用していたはずです。だから私のコードは次のようになります...

DatabaseReference mChild = databaseReference.child(user.getUid().child("name"); 
関連する問題