Как перебросить переменную с method1() в method2()?
Переменная не видна, так как она объявлена внутри метода, и на нее не существует жесткой ссылки. Иными словами, после выполнения метода переменная действительно стирается из памяти, что можно придумать?
Может есть вариант записать данные в временный файлик?
public class Test1
{
...
@JavascriptInterface
public String method1()
{
String title = 1;
return title;
}
}
public class Test2
{
public void method2()
{
title //ошибка компиляции - переменная title не видна из этого блока кода
}
}
Спасибо всем за внимание, вот ответ
public class Test1
{
...
@JavascriptInterface
public String method1()
{
String title = 1;
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("key_name", title); // сохранение переменной
return title;
}
}
public class Test2
{
public void method2()
{
SharedPreferences pref = mContext.getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
String title = pref.getString("key_name", null);
}
}
Фигурные скобки задают область видения переменных. Это все к вопросу о стеке. Строчка
{ String title = "1" } // именно с кавычками, в вашем примере в String почему-то передается int
создаст ссылку на объект title в стеке. Объект будет доступен во всех вложенных уровнях { }, но как только закроется фигурная скобка, внутри которой создавался объект, он перестает быть доступен извне. Решить вопрос можно, например, создав объект как поле класса, то есть
public class Test1 {
String title = "1";
...
public String method1() {
... // Объект title будет здесь доступен
}
public class Test2 {
public String method2() {
... // И здесь тоже
}
}
} // А вот здесь уже нет.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости