【发布时间】:2017-12-29 21:24:17
【问题描述】:
我正在尝试在我的应用中创建用户个人资料部分。在我的登录活动中,我从 FirebaseAUTH.getCurrentUser().getDisplayName() 请求用户名并将其保存在字符串中。
在我的主要活动的 xml 文件中,我放置了一个 textView,其中包含一个包含占位符的字符串。
我在登录和主活动 Java 文件中都尝试了 .setText .format 等,但文本根本没有改变..
关于如何解决这个问题的任何提示?
public class MainActivity extends AppCompatActivity
implements NavigationView.OnNavigationItemSelectedListener {
private HomeFragment hf;
private WebViewFragment wvf;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
firebaseAuth = FirebaseAuth.getInstance();
if (firebaseAuth.getCurrentUser().getDisplayName() != null) {
String name = firebaseAuth.getCurrentUser().getDisplayName();
final TextView profile = (TextView)findViewById(R.id.profile_section);
profile.setText("Test");
}
E/AndroidRuntime: 致命异常: main 进程:com.example.vreeni.firebaseauthentiction,PID:6060 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.vreeni.firebaseauthentiction/com.example.vreeni.firebaseauthentication.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法'void android.widget.TextView。空对象引用上的 setText(java.lang.CharSequence)' 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2822) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2897) 在 android.app.ActivityThread.-wrap11(未知来源:0) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1598) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:251) 在 android.app.ActivityThread.main(ActivityThread.java:6563) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void android.widget.TextView.setText(java.lang.CharSequence)' 在 com.example.vreeni.firebaseauthentication.MainActivity.onCreate(MainActivity.java:52) 在 android.app.Activity.performCreate(Activity.java:6975) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
【问题讨论】:
-
您要更改字符串资源吗?这是不可能的。但是您可以更改 TextView 或 EditText 中的文本。
-
是的,这就是我想要的..嗯,我该怎么做?我想在导航抽屉中有一个部分说用户名,后跟可以从 firebaseAuth.getCurrentUser().getDisplayName() 中检索到的用户名...感谢您的帮助!
-
检查您的 textview 在 XML 文件中是否具有相同的 ID,如此处定义的那样?
-
是一样的,是的。我还尝试将文本作为占位符,甚至没有文本,但结果相同。
-
您可以使用单独的 txt 文件来存储“动态”字符串。或数据库表。
标签: java android string nullpointerexception resources