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

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

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

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

03.07.2016, 08:43. Просмотров 202. Ответов 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 возвращает ноль. В чем ошибка и как можно исправить??
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2016, 08:43     Глобальные и локальные переменные
Посмотрите здесь:

Глобальные переменные и их значения Android
Android Сбор контролов в переменные
OPC переменные и Android приложение Android
JNI Входные переменные Android
Java. Занести переменные в массив Android
Android Как сбрасывать статические переменные после запуска?
Android Возможно ли создать класс, в котором бы хранились переменные и массивы разных размеров?
Псевдо глобальные переменные Android
Android Локальные ресурсы
Глобальные и локальные переменные! JavaScript
Android Переменные класса Application
Android Глобальные переменные, методы - где лучше заводить?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Frozik6k
12 / 12 / 7
Регистрация: 04.04.2016
Сообщений: 50
03.07.2016, 09:47     Глобальные и локальные переменные #2
А метод getBuy() точно вызывается после onRequestSuccess?
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();
Паблито
2240 / 1813 / 564
Регистрация: 12.05.2014
Сообщений: 6,456
Завершенные тесты: 1
03.07.2016, 14:46     Глобальные и локальные переменные #4
- объявлен слушатель, но нигде не используется
- код активити явно не весь
код - отстой, активити (?) наследуется х.з. от чего с очень информативным названием - ворксервис
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
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
03.07.2016, 15:30     Глобальные и локальные переменные #6
Цитата Сообщение от Timur_St Посмотреть сообщение
MainActivity main = new MainActivity();
Созданием Activity заведует система. Их руками не создают.
Читай про startactivityforresult.
Yandex
Объявления
03.07.2016, 15:30     Глобальные и локальные переменные
Ответ Создать тему
Опции темы

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