【问题标题】:Android get string from resource? [duplicate]Android从资源中获取字符串? [复制]
【发布时间】:2019-12-02 04:29:27
【问题描述】:

我想从 xml 资源中获取字符串并将其作为字符串变量值,这是我的代码:

String defaultText = Resources.getSystem().getString(R.string.release_movie_message_now);

运行应用系统时提示错误:

E/AndroidRuntime: 致命异常: main 进程:com.erlanggakmoekasan.imovie,PID:26603 android.content.res.Resources$NotFoundException:字符串资源 ID #0x7f0e0049 在 android.content.res.Resources.getText(Resources.java:363) 在 android.content.res.Resources.getString(Resources.java:456) 在 com.erlanggakmoekasan.imovie.notifications.ReleaseTodayReceiver$1.onResponse(ReleaseTodayReceiver.java:68) 在 retrofit2.DefaultCallAdapterFactory$ExecutorCallbackCall$1$1.run(DefaultCallAdapterFactory.java:83) 在 android.os.Handler.handleCallback(Handler.java:873) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:214) 在 android.app.ActivityThread.main(ActivityThread.java:7073) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)

我的string.xml如下:

    <resources>
        <string name="release_movie_message_now">telah rilis sekarang, cek dan lihat!</string>
    </resources>

有什么办法吗??注意我在BroadcastReceiver 做。

【问题讨论】:

  • BroadcastReceiver#onRecieve() 中将上下文作为参数传递。所以你可以使用context.getResources() ..

标签: android getstring


【解决方案1】:

你应该试试getResources()

返回应用程序包的资源实例

String defaultText = getResources().getString(R.string.release_movie_message_now);

仅供参考

 getResources() is not recognize

那么你应该在 getResources()

之前添加 Context 对象

【讨论】:

  • 在此之前我使用 getResources() 但 IDE 说方法 getResources() 无法识别我在 BroadcastReceiver 中所做的操作
  • @Erlangga 添加getApplicationContext().getResources()
  • 好的,我在 getResources 之前添加上下文
【解决方案2】:

在您的 Java 文件中

    String mytext = getResources().getString(R.string.mytextfromstringxmlfile);

在您的 String.xml 文件中

    <string name="mytextfromstringxmlfile">Hello World</string>

【讨论】:

    【解决方案3】:

    使用 getResources().getString(R.string.release_movie_message_now); 或者如果它不起作用,请使用 context.getString(R.string.release_movie_message_now);

    【讨论】:

      【解决方案4】:

      如果您想在活动/片段中获取字符串,请使用下面的字符串

      String message = getString(R.string.release_movie_message_now)
      

      如果你想要它在广播接收器中,那么

      @Override
      public void onReceive(Context context, Intent intent) {
         String message = context.getString(R.string.release_movie_message_now);
      }
      

      【讨论】: