TextView.setText() 空指针异常

TextView.setText() Null Pointer Exception

我目前在尝试在 ActivityOnCreate 方法中编辑 TextView 的文本时遇到问题。据我了解,在尝试更改文本之前必须调用 setContentView,但是我仍然遇到了这个问题。

这里是有问题的代码:

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

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

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

    userEmailtext = (TextView) findViewById(R.id.emailText);
    mAuth = FirebaseAuth.getInstance();
    mUser = mAuth.getCurrentUser();
    userEmailtext.setText("This Does Not Work");
}

Activity 包含 Android Studio 默认滑动菜单。 setText 的目的是更改滑动菜单的电子邮件地址文本。我认为问题可能在于滑动菜单是不同布局文件的一部分,这意味着没有 "emailText" textview 导致 null pointer exception,但是我仍然不确定这将如何纠正。

感谢任何帮助。

这取决于您的 R.id.emailText 组件在哪里。

如果直接在您的 R.layout.activity_dash_board 中,代码应该可以工作。 如果它在 R.id.nav_view 中,您应该通过 navigationView.findViewById(R.id.emailText)

到达它

您应该从 NavigationView 初始化您的 TextView 实例。你的情况:

userEmailtext = (TextView) navigationView.getHeaderView(0).findViewById(R.id.emailText);