[![I have the read and write set to true in the rules of the database.][1]][1]
我得到一个关于connectiontracker在解除绑定时抛出异常的错误。任何帮助都将不胜感激。我已经尝试过清理构建并通过重新启动使缓存失效。我在ondatasnapshot方法中尝试了许多不同代码的变体,但它们似乎都不起作用。我对gradle做了一些修改,也检查了sdk,但这似乎也不起作用。这段代码的目标是能够从数据库中读入用户名,并将其放入方法oncreateoptionsmenu中调用的菜单项中,以便在菜单中显示用户名。
[1]: https://i.stack.imgur.com/U3zLf.jpg`package com.example.ventit;
import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.media.Image;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.Query;
import com.google.firebase.database.ValueEventListener;
public class DashboardActivity extends AppCompatActivity {
private Button logout;
private TextView businessCareer;
private String username;
private String userID;
private FirebaseAuth fireBaseAuth;
FirebaseDatabase rootNode;
DatabaseReference reference;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// show the action bar in the dashboard activity.
supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);
getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#663a82")));
getSupportActionBar().setDisplayShowHomeEnabled(true);
// set the image in the action bar.
getSupportActionBar().setIcon(R.drawable.ic_black_gear);
setContentView(R.layout.dashboard);
logout = findViewById(R.id.logout_button);
businessCareer = findViewById(R.id.business_career);
fireBaseAuth = FirebaseAuth.getInstance();
userID = FirebaseAuth.getInstance().getUid();
rootNode = FirebaseDatabase.getInstance();
DatabaseReference reference = rootNode.getReference().child("users");
reference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
User uh = new User();
uh.setUsername(snapshot.child(userID).getValue(User.class).getUsername());
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
logout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FirebaseAuth.getInstance().signOut();
Intent intent = new Intent(DashboardActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
});
businessCareer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(DashboardActivity.this, BusinessCareer.class);
startActivity(intent);
finish();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.setting_menu, menu);
menu.findItem(R.id.username_item).setTitle(username);
return true;
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
switch(item.getItemId()){
case R.id.logout_item:
FirebaseAuth.getInstance().signOut();
Intent intent = new Intent(DashboardActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
return super.onOptionsItemSelected(item);
}
public String getUserID() { return FirebaseAuth.getInstance().getCurrentUser().getUid(); }
}
`[The values that I am getting are correct but the onDataChange method is getting stuck with errors.[![\]\[1\][2]][2]
[1]: https://i.stack.imgur.com/cv7xh.jpg
[2]: https://i.stack.imgur.com/bSmMF.jpg
暂无答案!
目前还没有任何答案,快来回答吧!