我正在尝试编写一个自动将图片上传到服务器的Android应用,但我只停留在一行代码上:
File f = File(context.getCacheDir(), "filename");
我得到的错误是
这让我感到困惑,因为我在使用context.getCacheDir()
的网络上看到很多例子就好了,而我收到了错误消息。
我的IDE设置可能有问题。我正在使用IntelliJ IDE。
以下是上下文问题的背景:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if( requestCode == CAMERA_PIC_REQUEST)
{
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
image.setImageBitmap(thumbnail);
//create a file to write bitmap data
File f = File(context.getCacheDir(), "filename");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
答案 0 :(得分:23)
您需要做一些基本的Java编程教程。 Java与JavaScript完全不同。
在这里,您使用context
作为变量,但您既没有声明它,也没有初始化它,因此错误。
您可以定义它(并同时初始化)
Context context = this;
因为this
引用了类的当前对象实例,而Activity
是Context
,或者更确切地说是extends
Context
。
或者,您可以使用this
。
File f = File(UploadToServer.this.getCacheDir(), "filename");
答案 1 :(得分:7)
错误是因为您尚未声明context
,也未将其作为参数传递
将context.getCacheDir()
更改为getApplicationContext.getCacheDir()
或this.getCacheDir()
所以
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if( requestCode == CAMERA_PIC_REQUEST)
{
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
image.setImageBitmap(thumbnail);
//create a file to write bitmap data
File f = File(context.getCacheDir(), "filename");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
将成为
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if( requestCode == CAMERA_PIC_REQUEST)
{
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
ImageView image =(ImageView) findViewById(R.id.PhotoCaptured);
image.setImageBitmap(thumbnail);
//create a file to write bitmap data
File f = File(getApplicationContext.getCacheDir(), "filename");
try {
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 2 :(得分:0)
添加此内容:
Context context = this;
您需要使用它来初始化上下文
然后按Alt + Enter
您必须为此活动分配上下文