Страница 1 из 1

Как получить доступ к переменной?

Добавлено: 19 сен 2015, 18:44
MrBAD
Есть такая функция

public void CaptureMapScreen() {

GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
Bitmap bitmap;
String name = null;
@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;
try {
name = "POI" + System.currentTimeMillis() + ".png";
FileOutputStream out = new FileOutputStream(Main.SCREEN_SHOTS_LOCATION + name);
bitmap.compress(Bitmap.CompressFormat.PNG, 75, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};
myMap.snapshot(callback);
}

Как правильно получить извне значение переменной NAME?

Re: Как получить доступ к переменной?

Добавлено: 19 сен 2015, 19:29
Perfomer
Никак. Нужно создать переменную name за пределами функции и использовать её.

Re: Как получить доступ к переменной?

Добавлено: 19 сен 2015, 19:43
MrBAD
Perfomer писал(а):Никак. Нужно создать переменную name за пределами функции и использовать её.
Пробовал. Сначала требует сделать переменную final, а потом все равно не видит.

Re: Как получить доступ к переменной?

Добавлено: 20 сен 2015, 08:44
Perfomer
Код покажите, где Вы создали переменную вне функции.

Re: Как получить доступ к переменной?

Добавлено: 20 сен 2015, 11:49
doter.ua
return name ?

Re: Как получить доступ к переменной?

Добавлено: 20 сен 2015, 13:05
MrBAD
doter.ua писал(а):return name ?

Я еще новичок в Jave. И попытка переопределить встроенную функцию, что бы она возвращала параметр, мне не удалось. Среда программирования ругается на несовместимость.

А вот описав в корне класса переменную типа "protected String nameImage" удалось сделать её видимой в этой процедуре. Правильно ли это?

Re: Как получить доступ к переменной?

Добавлено: 20 сен 2015, 13:43
doter.ua
MrBAD писал(а):
doter.ua писал(а):return name ?

Я еще новичок в Jave. И попытка переопределить встроенную функцию, что бы она возвращала параметр, мне не удалось. Среда программирования ругается на несовместимость.

А вот описав в корне класса переменную типа "protected String nameImage" удалось сделать её видимой в этой процедуре. Правильно ли это?
CaptureMapScreen встроенная функция?

З.Ы. "описав в корне класса" так тоже можно, но тогда переменная будет занимать память в течении всей жизни экземпляра класса(в данном случае активити). После работы с переменной можно ее обнулить = null и сборщик мусора разберется с ней.

Re: Как получить доступ к переменной?

Добавлено: 21 сен 2015, 00:16
MrBAD
MrBAD писал(а):
Perfomer писал(а):Никак. Нужно создать переменную name за пределами функции и использовать её.
Пробовал. Сначала требует сделать переменную final, а потом все равно не видит.
Как создать, какую??????

пробовал:
final String name;

потом

name = "POI" + System.currentTimeMillis() + ".jpeg";
CaptureMapScreen();

внутри CaptureMapScreen() - отладка выдает что name = null;



Функция

// захват снимка карты для сервиса Google
public void CaptureMapScreen() {

GoogleMap.SnapshotReadyCallback callback = new GoogleMap.SnapshotReadyCallback() {
Bitmap bitmap;

@Override
public void onSnapshotReady(Bitmap snapshot) {
bitmap = snapshot;

try {
Log.d(Main.TAG, "image name on capture " + name);
FileOutputStream out = new FileOutputStream(Main.SCREEN_SHOTS_LOCATION +
name);
if (out != null) { bitmap.compress(Bitmap.CompressFormat.JPEG, 85, out); }
out.close();
// MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName()); // регистрация в фотоальбоме
} catch (Exception e) {
e.printStackTrace();
}
}

};
myMap.snapshot(callback);
}

мне надо передать в нее имя файла (name) для сохранения картинки в асинхронном потоке (как я понимаю) реализованным "GoogleMap.SnapshotReadyCallback callback......"

Прошу помощи! HELP!