Невозможно разрешить контекст символа '

Я пытаюсь написать приложение для 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();
            }

Ответ 1

Вам нужно сделать некоторые базовые учебники по программированию на Java. Java полностью отличается от JavaScript.

Здесь вы используете context как переменную, но вы ее не объявили или не инициализировали, следовательно, ошибку.

Вы можете определить его (и инициализировать одновременно)

 Context context = this;

поскольку this относится к экземпляру текущего объекта класса, а Activity - context, а точнее, extends context.

В качестве альтернативы вы можете просто использовать this.

File f = File(UploadToServer.this.getCacheDir(), "filename");

Ответ 2

Ошибка: bacuse вы объявили havent 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();
        }
    }
}