无法解析符号'上下文'

时间:2014-02-16 09:31:44

标签: android intellij-idea

我正在尝试编写一个自动将图片上传到服务器的Android应用,但我只停留在一行代码上:

        File f = File(context.getCacheDir(), "filename");

我得到的错误是 enter image description here

这让我感到困惑,因为我在使用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();
            }

3 个答案:

答案 0 :(得分:23)

您需要做一些基本的Java编程教程。 Java与JavaScript完全不同。

在这里,您使用context作为变量,但您既没有声明它,也没有初始化它,因此错误。

您可以定义它(并同时初始化)

 Context context = this;

因为this引用了类的当前对象实例,而ActivityContext,或者更确切地说是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

您必须为此活动分配上下文