![](/img/trans.png)
[英]Why am I getting this error in Android Studio on SearchView and OnQueryTextListener?
[英]Why am I getting this error “Expected resource of type raw” in Android Studio?
我试图使用按钮设置默认墙纸,但是由于某种原因,当我在OnCreate方法中设置InputStream时,出现此错误“ raw类型的预期资源”。 我引用了drawable文件夹,并使用了drawable文件夹中的icon.png图像。 我正在遵循NewBoston系列中的教程,它对于Travis似乎工作正常,但是由于某些原因,我的作品在Android Studio中不起作用。 可能是什么错误? 谢谢
Camera.java:
package com.example.user.cameraapplication;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Switch;
import java.io.IOException;
import java.io.InputStream;
/**
* Created by user on 16-08-2015.
*/
public class Camera extends Activity implements View.OnClickListener{
ImageView iv;
Button b1,b2;
ImageButton img;
Intent i;
final static int cameractivity = 0;
Bitmap b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.photo);
inititalize();
InputStream is = getResources().openRawResource(R.drawable.icon);
b = BitmapFactory.decodeStream(is);
}
private void inititalize() {
iv = (ImageView)findViewById(R.id.iView1);
img = (ImageButton)findViewById(R.id.imgbtn);
b1 = (Button)findViewById(R.id.btn1);
b2 = (Button)findViewById(R.id.btn2);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.btn1:
try {
getApplicationContext().setWallpaper(b);
} catch (IOException e) {
e.printStackTrace();
}
break;
case R.id.imgbtn:
i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(i,cameractivity);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==RESULT_OK)
{
Bundle extras = data.getExtras();
b = (Bitmap)extras.get("data");
iv.setImageBitmap(b);
}
}
}
图片:
发生此错误是因为Android Studio预期资源文件的类型为raw。
在“ res”文件夹中创建一个名为“ raw”的新文件夹,并将图标放在此处。 原始文件夹应包含您应用程序的所有媒体文件。
然后更换
InputStream is = getResources().openRawResource(R.drawable.icon);
与
InputStream is = getResources().openRawResource(R.raw.icon);
另一个解决方案是这样做。 这不需要您创建原始文件夹:
InputStream is = getResources().openRawResource(+ R.drawable.icon);
更换
InputStream is = getResources().openRawResource(R.drawable.icon);
用
InputStream is = getResources().openRawResource(+ R.drawable.icon);
我们来看一下openRawResource
文档
打开数据流以读取原始资源。 它只能与值是资产文件名称的资源一起使用-也就是说,它可以用于打开可绘制,声音和原始资源 ; 它将在字符串和颜色资源上失败。
因此,解决方案-保持原样 ,即
InputStream is = getResources().openRawResource(R.drawable.icon);
Android Studio中的检查是错误的。 你可以加
@SuppressWarnings("ResourceType")
隐藏错误。
注意
使用+ R.drawable.icon
只是愚弄了检查,因为它无法再确定它是哪种资源。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.