如何从资源字符串获取字符串成片段

时间:2018-12-17 08:09:44

标签: android

我尝试阅读Stack Overflow上的许多解决方案,发现它们要么不适用于我的场景,要么我根本不理解它们的解释(我对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.bigsplash可以正常工作(当我为其他字符串使用文字字符串时)。

该错误消息指出一个int,我认为这意味着它正在获取引用而不是实际的字符串。

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

谢谢。

4 个答案:

答案 0 :(得分:2)

从代码的任何部分的资源中获取字符串的最简单方法是重写Application类并创建静态方法以获取“ Application context”。

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

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)

希望有帮助!

答案 1 :(得分:2)

以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);

答案 2 :(得分:2)

您可以使用:

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

或者只是:

getString(R.string.my_string);

答案 3 :(得分:1)

尝试这个

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