下面资源调用写法有误吗 getResources().getDrawable(R.drawable.icon);
时间: 2024-03-17 20:45:12 浏览: 151
从Android 5.0(API级别21)开始,getDrawable(int)方法已被弃用,建议使用 ContextCompat.getDrawable(Context, int) 方法替代。因此,如果你的应用程序的 minSdkVersion 为 21 或更高版本,则应该使用以下代码来获取 drawable 资源:
```java
ContextCompat.getDrawable(context, R.drawable.icon);
```
如果你的应用程序的 minSdkVersion 低于 21,则可以使用以下代码来获取 drawable 资源:
```java
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.icon);
```
但需要注意的是,getResources().getDrawable(int)方法已过时,这意味着在将来的 Android 版本中可能会被移除,因此建议使用 ContextCompat.getDrawable(Context, int) 方法替代。
相关问题
rbText.setBackground(getResources().getDrawable(R.drawable.unselected_background)); rbKeypad.setBackground(getResources().getDrawable(R.drawable.unselected_background)); rbChat.setBackground(getResources().getDrawable(R.drawable.unselected_background));
这段代码的功能是设置三个 RadioButton(rbText、rbKeypad、rbChat)的背景为 unselected_background。其中 R.drawable.unselected_background 是一个 Drawable 资源,可能是一个图片或者是一个 XML 文件。这样设置可以使得这三个 RadioButton 的外观与其他未被选中的 RadioButton 保持一致,从而提高界面的一致性和美观性。
String fragmentTag; switch (checkedId){ case R.id.text: fragmentTag = "textFragmentTag"; rbText.setBackground(getResources().getDrawable(R.drawable.selected_background)); // 设置选中状态的背景 break; case R.id.keypad: fragmentTag = "keypadFragmentTag"; rbKeypad.setBackground(getResources().getDrawable(R.drawable.selected_background)); // 设置选中状态的背景 break; case R.id.chat: fragmentTag = "chatFragmentTag"; rbChat.setBackground(getResources().getDrawable(R.drawable.selected_background)); // 设置选中状态的背景 break; default: throw new IllegalStateException("Unexpected value: " + checkedId); }
这段代码的功能是根据选中的 RadioButton 的 id,设置对应的 Fragment 的 tag,并设置选中状态的背景。具体来说,它会根据选中的 RadioButton 的 id,将 fragmentTag 设置为对应的值("textFragmentTag"、"keypadFragmentTag"、"chatFragmentTag"),并将选中的 RadioButton 的背景设置为 selected_background,以突出显示当前选中的 RadioButton。这样做可以帮助用户更清楚地知道自己当前所处的界面,提高交互的效率和友好度。
阅读全文