我尝试阅读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,我认为这意味着它正在获取引用而不是实际的字符串。
如何从片段中获取字符串?
谢谢。
答案 0 :(得分:2)
从代码的任何部分的资源中获取字符串的最简单方法是重写Application类并创建静态方法以获取“ Application context”。
例如,查看我的应用程序AB Music的应用程序类。
引用方法
public static Context getContext(){
return instance;
}
现在,您只需调用即可从代码中任意位置的资源中获取字符串。
MyApp.getContext().getString(R.string.mystring)
希望有帮助!
答案 1 :(得分:2)
以Java代码读取字符串值或字符串数组。
在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>
以Java代码读取字符串值。仅字符串名称
内部活动::
String defaultInputText = getResources().getString(R.string.auto_complete_text_view_car);
内部片段:
String defaultInputText = getActivity().getResources().getString(R.string.auto_complete_text_view_car);
内部活动::
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)