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

Ответить
MrBAD
Сообщения: 15
Зарегистрирован: 17 авг 2015, 13:01

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

Сообщение MrBAD » 19 сен 2015, 18:44

Есть такая функция

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?

Perfomer
Сообщения: 14
Зарегистрирован: 05 авг 2015, 18:38

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

Сообщение Perfomer » 19 сен 2015, 19:29

Никак. Нужно создать переменную name за пределами функции и использовать её.

MrBAD
Сообщения: 15
Зарегистрирован: 17 авг 2015, 13:01

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

Сообщение MrBAD » 19 сен 2015, 19:43

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

Perfomer
Сообщения: 14
Зарегистрирован: 05 авг 2015, 18:38

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

Сообщение Perfomer » 20 сен 2015, 08:44

Код покажите, где Вы создали переменную вне функции.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 20 сен 2015, 11:49

return name ?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

MrBAD
Сообщения: 15
Зарегистрирован: 17 авг 2015, 13:01

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

Сообщение MrBAD » 20 сен 2015, 13:05

doter.ua писал(а):return name ?

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

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

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

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

Сообщение doter.ua » 20 сен 2015, 13:43

MrBAD писал(а):
doter.ua писал(а):return name ?

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

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

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

MrBAD
Сообщения: 15
Зарегистрирован: 17 авг 2015, 13:01

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

Сообщение MrBAD » 21 сен 2015, 00:16

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!

Ответить