我有个问题。 在我的应用程序中,您可以选择设置一个帐户(注册-->然后您可以看到登录屏幕并有机会登录)。当您到达登录屏幕并尝试使用当前注册的帐户登录时,应用程序崩溃并显示以下错误消息:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
如果你们能帮我,我将非常感谢!
代码如下所示:
public class UserHomeActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, UserOnFragmentBtnSelected {
Toolbar toolbar;
DrawerLayout drawer;
ActionBarDrawerToggle toggle;
NavigationView navigationView;
FragmentManager fragmentManager;
FragmentTransaction fragmentTransaction;
Fragment fragment;
String username;
TextView tf, tf2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav_user);
toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
drawer = findViewById(R.id.drawer_layout);
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.addDrawerListener(toggle);
toggle.syncState();
navigationView = findViewById(R.id.nav_view);
navigationView.bringToFront();
navigationView.setCheckedItem(R.id.nav_home);
navigationView.setNavigationItemSelectedListener(this);
fragmentManager = getSupportFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.container_fragment, new UserFragmentHome());
fragmentTransaction.commit();
getUsername();
}
private void getUsername() {
final FirebaseFirestore db = FirebaseFirestore.getInstance();
final FirebaseAuth mAuth = FirebaseAuth.getInstance();
DocumentReference docRef = db.collection("users").document(mAuth.getCurrentUser().getUid());
docRef.get().addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
Users user = document.toObject(Users.class);
//getSupportActionBar().setTitle("Hallo " + user.getUsername());
username = user.getUsername();
tf = findViewById(R.id.nav_header_user_name);
tf2 = findViewById(R.id.nav_header_user_amount);
if(user == null && username == null) {
tf2.setText("Loading");
}else{
tf.setText(username + "");
tf2.setText(user.getKontostand() + "");
}
getSupportActionBar().setTitle(R.string.app_name);
kontostandUpdaten();
} else {
Toast.makeText(getApplicationContext(), "Der aktuelle Nutzer konnte nicht in der Datenbank gefunden werden.", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getApplicationContext(), "Ein Problem ist aufgetreten " + task.getException().toString(), Toast.LENGTH_SHORT).show();
}
}
});
}
}
您为Textbow tf1和tf2创建了两个全局变量,但实际上没有初始化它,要解决这个问题很简单,在类的onCreate方法中初始化您的textviews!
tf1 = (TextView)findViewById(R.id.text1);
tf2 = (TextView)findViewById(R.id.text2);
请访问此链接以获取文档