无法解析符号'上下文'

hex*_*cle 18 android intellij-idea

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

        File f = File(context.getCacheDir(), "filename");
Run Code Online (Sandbox Code Playgroud)

我得到的错误是 在此输入图像描述

这让我感到困惑,因为我在网络上看到很多使用得很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();
            }
Run Code Online (Sandbox Code Playgroud)

Sim*_*mon 24

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

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

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

 Context context = this;
Run Code Online (Sandbox Code Playgroud)

因为this是指一类的当前对象实例和Activity是一个Context,或者更精确地说,它extends Context.

或者,你可以使用this.

File f = File(UploadToServer.this.getCacheDir(), "filename");
Run Code Online (Sandbox Code Playgroud)


dmS*_*azi 7

错误是你没有声明的bacuse 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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

会变成

@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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)