代码之家  ›  专栏  ›  技术社区  ›  Markus

如何将字符串从资源字符串中获取到片段中

  •  0
  • Markus  · 技术社区  · 6 年前

    我试着阅读了一些关于堆栈溢出的解决方案,发现它们对我的场景不起作用,或者我根本不理解它们的解释(我对Java和Android很陌生)。 我在res/values/strings.xml下设置了希望在类中使用的字符串:

    public class AttractionFragment extends Fragment {
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.word_list, container, false);
    
        // create an array list of details
        final ArrayList<Details> details = new ArrayList<>();
    
        // Details details
        details.add(new Details(getActivity().getString(R.string.fun_bigsplash_name), getString(R.string.fun_bigsplash_addr), R.string.fun_bigsplash_num, R.drawable.bigsplash));
    

    我尝试过很多变体(它们不同的原因只是为了展示我尝试过的东西),但无法解决。r.drawable.bigslash工作正常(当我使用其他字符串时)。

    错误消息声明了一个int,我认为这意味着它得到的是引用,而不是实际的字符串。

    如何从片段中获取字符串?

    谢谢。

    4 回复  |  直到 6 年前
        1
  •  2
  •   Anton Sarmatin    6 年前

    你可以使用:

    getResources().getString(R.string.my_string);
    

    或者只是:

    getString(R.string.my_string);
    
        2
  •  2
  •   King of Masses    6 年前

    在Java代码中读取字符串值或字符串数组。

    1. 在strings.xml中定义字符串数组使用string array xml元素。

      显示选择

      <string name="auto_complete_text_view_car">Input Favorite Car Name</string>
      
      <string-array name="car_array">
          <item>Audi</item>
          <item>BMW</item>
          <item>Benz</item>
          <item>Ford</item>
          <item>Toyota</item>
          <item>Tesla</item>
          <item>Honda</item>
          <item>Hyundai</item>
      </string-array>
      

    2. 读取Java代码中的字符串值。仅字符串名称

    内部活动:

    String defaultInputText = getResources().getString(R.string.auto_complete_text_view_car);
    

    片段内部:

    String defaultInputText = getActivity().getResources().getString(R.string.auto_complete_text_view_car);
    
    1. 在Java源代码中读取字符串数组。请注意car_array只是在strings.xml中定义的字符串数组名称。

    内部活动:

    String carArr[] = getResources().getStringArray(R.array.car_array);
    

    片段内部:

    String carArr[] = getActivity().getResources().getStringArray(R.array.car_array);
    
        3
  •  1
  •   Amit Bhandari    6 年前

    从代码任何部分的资源中获取字符串的最简单方法是重写应用程序类并创建静态方法以获取“应用程序上下文”。

    例如,查看我的应用程序AB音乐的应用程序类。

    https://github.com/amit-bhandari/AB-Music-Player/blob/master/app/src/main/java/com/music/player/bhandari/m/MyApp.java

    参考方法

    public static Context getContext(){
            return instance;
    }
    

    现在,您可以通过简单的调用从代码中任何位置的资源中获取字符串。

    MyApp.getContext().getString(R.string.mystring)
    

    希望它有帮助!

        4
  •  1
  •   HussainAbbas    6 年前

    试试这个

    getActivity().getResources().getString(R.string.app_name)