Android Studio点击按钮显示字符串文本与图片问题求助
问题解答:Android按钮点击显示字符串与图片的问题
嘿,我来帮你搞定这个问题!你遇到的getResources()和R.strings标红问题,以及文本无法显示的问题,都是小细节出错了,咱们一步步来修复:
一、标红问题的原因及修复
getResource()标红:正确的方法名是getResources()(注意末尾多了个s),Android中获取资源的系统方法是getResources(),少了s就会被识别为不存在的方法。R.strings标红:Android资源引用里,字符串资源的正确写法是R.string.xxx,这里是单数string而非复数strings,把R.strings.delivery_address改成R.string.delivery_address就能解决。
二、文本显示的完整解决方案
你当前的代码只处理了图片显示,文本部分还缺少对应的承载控件,需要先在布局中添加TextView,再在代码中完成文本设置:
步骤1:修改布局文件(activity_main.xml)
确保布局包含Button、ImageView和TextView:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击显示内容"/> <ImageView android:id="@+id/img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp"/> <TextView android:id="@+id/tv_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp"/> </LinearLayout>
步骤2:修正后的Java代码
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btn = findViewById(R.id.btn); final ImageView img = findViewById(R.id.img); final TextView tvContent = findViewById(R.id.tv_content); // 获取TextView控件 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // 修复资源引用错误 String myString = getResources().getString(R.string.delivery_address); // 设置图片 img.setImageResource(R.drawable.bb); // 设置TextView文本 tvContent.setText(myString); } }); }
三、额外注意事项
- 确认
strings.xml中存在目标字符串资源,示例如下:<string name="delivery_address">你的配送地址文本</string> - 确认
drawable文件夹中存在名为bb的图片资源(如bb.png/bb.webp)。 - 如果你的文本是HTML格式,需要用
Html.fromHtml()解析(注意版本适配):// 处理HTML格式文本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { tvContent.setText(Html.fromHtml(myString, Html.FROM_HTML_MODE_LEGACY)); } else { tvContent.setText(Html.fromHtml(myString)); }
内容的提问来源于stack exchange,提问作者danyali
相关产品推荐
相关产品推荐

