我有一个textview,当它被点击时,我在对话框中填充了一个listView。这段代码以前工作正常,但今天却抛出了异常。
这是我的代码:
tvSelectedFont = (TextView)findViewById(R.id.lblQuoteSelectedFont);
tvSelectedFont.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ListView listView = new ListView(context);
listView.setAdapter(new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1,
new String[] {"Default", "Serif", "Monospace"}));
final Dialog dialog = new Dialog(context);
dialog.setContentView(listView);
dialog.setTitle(R.string.txt_settings_QuotefontName);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String selectedTypeFace = ((TextView)view).getText().toString();
tvSelectedFont.setText(selectedTypeFace);
switch(selectedTypeFace)
{
case "Serif":
selectedQuoteTypeFace = Typeface.SERIF;
break;
case "Monospace":
selectedQuoteTypeFace = Typeface.MONOSPACE;
break;
default:
selectedQuoteTypeFace = Typeface.DEFAULT;
break;
}
tvQuoteTextSample.setTypeface(selectedQuoteTypeFace, selectedQuoteFontStyle);
dialog.dismiss();
}
});
dialog.show();
}
});
logcat错误显示:
Device driver API version: 29
User space API version: 29
03-17 14:33:24.701 23220-23220/com.example.manas.dailyquoteswidget E/﹕ mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Tue Jul 22 19:59:34 KST 2014
03-17 14:33:27.926 23220-23220/com.example.manas.dailyquoteswidget E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.manas.dailyquoteswidget, PID: 23220
android.content.res.Resources$NotFoundException: Resource is not a Drawable (color or path): TypedValue{t=0x2/d=0x7f0100a7 a=3}
at android.content.res.Resources.loadDrawable(Resources.java:3415)
at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
at android.widget.AbsListView.<init>(AbsListView.java:1089)
at android.widget.ListView.<init>(ListView.java:152)
at android.widget.ListView.<init>(ListView.java:148)
at android.widget.ListView.<init>(ListView.java:144)
at com.example.manas.dailyquoteswidget.DailyQuotesWidgetConfigureActivity$6.onClick(DailyQuotesWidgetConfigureActivity.java:182)
at android.view.View.performClick(View.java:4640)
at android.view.View$PerformClick.run(View.java:19425)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5593)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
at dalvik.system.NativeStart.main(Native Method)
无法弄清楚问题所在。有什么帮助吗?
答案 0 :(得分:121)
我在最近的应用程序中遇到了这个问题。在我的情况下,问题是我把一个图像放在名为drawable-v21的文件夹中,这在旧的Android API中是不可用的。
解决方案是将你的drawable放在drawable -... dpi文件夹中。
希望有所帮助。
答案 1 :(得分:19)
在Android Studio中将项目层次结构更改为项目文件。
然后转到res文件夹,您将看到多个可绘制文件夹。将图像复制到适当的文件夹(可绘制)或基于Api级别。
在我的情况下,图像存在于drawable-24文件夹中,因此它在api&lt; 24设备上不可用。
答案 2 :(得分:9)
我想通了,这不是代码的问题,而是主题。在问题开始后,我最近将主题从android:theme="@style/AppTheme"
更改为android:theme="@style/Theme.AppCompat.NoActionBar"
。我恢复了旧的AppTheme thene它再次开始工作。似乎NoActionBar主题与对话框不兼容。
答案 3 :(得分:2)
我在另一种情况下遇到了这个错误,结果发现我不小心将一个drawable设置为R.id.something
而不是R.drawable.something
!
答案 4 :(得分:2)
请确保您遵循上述解决方案,如果非他们为您工作,请尝试此操作。
在我的情况下,问题是由于只有 hdpi 图像分辨率的可绘制图标。将这些图标更改为包含 xhdpi,mdpi,xxhdpi和xxxhdpi 分辨率的文件夹。
这解决了我的问题。
PS:
我通过安装插件&#34; Android可绘制导入器&#34;将图标转换为不同的图像分辨率。
答案 5 :(得分:1)
在finder中的Mac上,我只是简单地将../drawable/drawable-24文件夹中的所有文件移动到了/ drawable,并且所有版本都适用于较早的android版本和Oreo。另外,当您将图像复制并粘贴到Android Studio中时,请确保将其粘贴到drawable而不是drawable // drawable-24中,这可能是默认设置。
答案 6 :(得分:0)
也许您的视图背景资源不是彩色的可绘制目录。查看背景不支持彩色资源。
像这样查看背景
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true">
<shape>
<solid android:color="#ffffffff"/>
</shape>
</item>
<item android:state_selected="false">
<shape>
<solid android:color="#00000000"/>
</shape>
</item>
</selector>
答案 7 :(得分:0)
通过确保不包含您的drawable.xml(v24),可以使其正常运行
答案 8 :(得分:0)
<ImageView
...
android:src="@drawable/realtconsult" />
如果您要从视图中编写它,那么它将起作用。
答案 9 :(得分:-1)
将所有ic_xyz.xml文件夹移动到可绘制(v24),即选择出现此问题的文件夹并将其移动到或选择--->重构--->移动文件->(更改路径)到Drawable(v24)。