Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Timur_St
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 17
#1

Глобальные и локальные переменные - Программирование Android

03.07.2016, 08:43. Просмотров 278. Ответов 5
Метки нет (Все метки)

Здравствуйте подскажите почему метод getBuy() возвращает ноль??
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class MainActivity extends WorkService {
   public int buy;
 
   public  class TextRequestListener implements RequestListener<String> {
 
        @Override
        public void onRequestFailure(SpiceException spiceException) {
            //Toast.makeText(MainActivity.this, "failure", Toast.LENGTH_SHORT).show();
            Log.d(TAG,"failure");
        }
 
        @Override
        public void onRequestSuccess(final String result) {
            //Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
            Log.d(TAG,"success");
            Log.d(TAG,result);
            //парсинг ответа, JSON
            try {
                dataJsonObj = new JSONObject(result);
 
                JSONObject sys = dataJsonObj.getJSONObject("query");
                JSONObject sys1 = sys.getJSONObject("results");
                JSONObject sys2 = sys1.getJSONObject("rate");
 
                buy = sys2.getInt("Ask");
            } catch (JSONException e) {
                e.printStackTrace();
            }
            Log.d(TAG,"buy = " + buy);
        }
    }
 
   public int getBuy(){
    return buy;
}
buy в этой строке, buy = sys2.getInt("Ask");, равна 337, а в методе public int getBuy(){return buy;} buy возвращает ноль. В чем ошибка и как можно исправить??
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2016, 08:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Глобальные и локальные переменные (Программирование Android):

Глобальные переменные и их значения - Программирование Android
Кто знает, подскажите, как в Java коде объявить глобальные переменные для всех классов и как по методу OnClick повторять алгоритм, то есть...

Псевдо глобальные переменные - Программирование Android
public void Class1() { Integer gmx = 5; } public boolean Class2() { return true; }

Глобальные переменные, методы - где лучше заводить? - Программирование Android
Добрый день! Только начинаю осваивать Android разработку. Бывает так, что для удобства требуется завести глобальные переменные,...

Локальные ресурсы - Программирование Android
Всем доброго времени суток))) За ранее извиняюсь если спрошу глупость! Может ли пользователь обновлять локальные ресурсы в приложении...

Глобальные переменные vs Локальные - C (СИ)
Имеется программа, за цикл, выполняет пересчет всех элементов матрицы. Есть нужда сделать динамический глобальный массив. Как повлияет...

Глобальные и локальные переменные! - JavaScript
Какой будет ответ?

5
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 51
03.07.2016, 09:47 #2
А метод getBuy() точно вызывается после onRequestSuccess?
0
Timur_St
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 17
03.07.2016, 10:17  [ТС] #3
Метод getBuy() вызывается в фрагменте
Java
1
2
MainActivity main = (MainActivity)getActivity();
int buy = main.getBuy();
0
Pablito
2477 / 1961 / 611
Регистрация: 12.05.2014
Сообщений: 6,868
Завершенные тесты: 1
03.07.2016, 14:46 #4
- объявлен слушатель, но нигде не используется
- код активити явно не весь
код - отстой, активити (?) наследуется х.з. от чего с очень информативным названием - ворксервис
0
Timur_St
0 / 0 / 0
Регистрация: 13.05.2016
Сообщений: 17
03.07.2016, 15:07  [ТС] #5
не стал выкладывать весь код (очень большой), сделал похожий пример вот весь код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class CurrencyService extends SpiceService {
    @Override
    //для работы со строковыми данными
    public CacheManager createCacheManager(Application application) throws CacheCreationException {
        CacheManager cacheManager = new CacheManager();
 
        InFileStringObjectPersister inFileStringObjectPersister =
                new InFileStringObjectPersister(application);
 
        cacheManager.addPersister(inFileStringObjectPersister);
 
        return cacheManager;
    }
 
    @Override
    //кол-во возможных потоков
    public int getThreadCount() {
        return 3;
    }
 
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class WorkService extends AppCompatActivity {
    private SpiceManager spiceManager = new SpiceManager(CurrencyService.class);
 
    @Override
    protected void onStart() {
        spiceManager.start(this);
        super.onStart();
    }
 
    @Override
    protected void onStop() {
        spiceManager.shouldStop();
        super.onStop();
    }
 
    protected SpiceManager getSpiceManager() {
        return spiceManager;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class MainActivity extends WorkService {
    int  buy;
    private SimpleTextRequest txtRequest;
    JSONObject dataJsonObj  = null;
    final String TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        txtRequest = new SimpleTextRequest("https://query.yahooapis.com/v1/public/yql?q=select+*+from+yahoo.finance.xchange+where+pair+=+%22USDKZT%22&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=");
 
        Button btn = (Button)findViewById(R.id.button);
        assert btn != null;
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, PageActivity.class);
                startActivity(intent);
            }
        });
    }
 
    @Override
    protected void onStart() {
        super.onStart();
        getSpiceManager().execute(txtRequest, "txt", DurationInMillis.ONE_MINUTE, new TextRequestListener());
    }
 
    public final class TextRequestListener implements RequestListener<String> {
 
        @Override
        public void onRequestFailure(SpiceException spiceException) {
            Toast.makeText(MainActivity.this, "failure", Toast.LENGTH_SHORT).show();
        }
 
        @Override
        public void onRequestSuccess(final String result) {
 
            Toast.makeText(MainActivity.this, "success", Toast.LENGTH_SHORT).show();
            Log.d(TAG,result);
            //парсинг ответа JSON
            try {
                dataJsonObj = new JSONObject(result);
 
                JSONObject sys = dataJsonObj.getJSONObject("query");
                JSONObject sys1 = sys.getJSONObject("results");
                JSONObject sys2 = sys1.getJSONObject("rate");
 
                buy = sys2.getInt("Ask");
 
            } catch (JSONException e) {
                e.printStackTrace();
            }
            Log.d(TAG,"Buy = " + buy);
        }
 
        public int getBuy(){
            Log.d(TAG,"getBuy = " + buy);
            return buy;
        }
    }
}
и потом вызываю метод getBuy() в другой активити
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class PageActivity extends AppCompatActivity {
    final String TAG = "myLogs";
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_page);
        MainActivity main = new MainActivity();
        MainActivity.TextRequestListener listener = main.new TextRequestListener();
        int buy = listener.getBuy();
 
        Log.d(TAG, "buy = "+ buy);
    }
}
возвращает ноль, а должен 337. Использую библиотеку RoboSpice
0
Mikalai
256 / 232 / 94
Регистрация: 11.01.2015
Сообщений: 656
03.07.2016, 15:30 #6
Цитата Сообщение от Timur_St Посмотреть сообщение
MainActivity main = new MainActivity();
Созданием Activity заведует система. Их руками не создают.
Читай про startactivityforresult.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2016, 15:30
Привет! Вот еще темы с ответами:

Локальные и глобальные переменные. - Pascal
ОГбьясните пожалуйста чем отличаются Procedure и Function Да и что такое глобальные и локальные переменные P.s прочитал книгу а так и...

Локальные/глобальные переменные, ошибка - Lazarus
выдаёт ошибку. вот фрагмент кодаprocedure TForm1.obrabotaetListingClick(Sender: TObject); var strList: TStringList;//список строк из...

Локальные, глобальные переменные и функции - C++
Есть массив типа char. char b; Он заполнен нулями и единицами. b находится в main. Нужно вывести на консоль b в ф-ции main, но уже в...

Глобальные и локальные переменные с одинаковыми именами - Assembler
Добрый день. Как в ассемблере создать две переменные с одинаковыми именами? Одна будет глобальная, а другая локальная. Да и можно ли так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
03.07.2016, 15:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru