【问题标题】:Edit String in XML file [duplicate]在 XML 文件中编辑字符串 [重复]
【发布时间】: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


【解决方案1】:

您可以在this resource 的顶部找到一个简单的示例。

 public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);
         final TextView helloTextView = (TextView) findViewById(R.id.text_view_id);
         helloTextView.setText(R.string.user_greeting);
     }
 }

如果仍有问题,请提供您的代码。

【讨论】:

  • 更新了代码和错误信息
  • 您的变量配置文件为空。请同时提供您的 activity_main.xml。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 2016-11-23
  • 2016-04-13
  • 2023-04-03
相关资源
最近更新 更多