10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
1

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar

15.08.2014, 00:53. Показов 1373. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
 
        switch (item.getItemId()) {
 
            case R.id.refresh:
    NewsDownloader news_downloader = new NewsDownloader();
                news_downloader.execute("getdata| ");
            break;
        }
        return super.onOptionsItemSelected(item);
    }
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
  class NewsDownloader extends AsyncTask<String, Void, String> {
        
    String response_string, key, value; //Строка для хранени ответа от сервера
    HttpPost post_request;
    HttpClient httpclient;
    List<NameValuePair> nameValuePairs;
    HttpEntity responseEntity;
    HttpResponse response;
    int delimiter_position;
    
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    }
 
    @Override
    protected String doInBackground(String... string) {
        
    try {
            
        delimiter_position = string[0].indexOf("|");
        
        key = string[0].substring(0, delimiter_position);   
        value = string[0].substring(delimiter_position+1, string[0].length());
        
        httpclient = new DefaultHttpClient();
        
        if (key.equals("getdata")){
        
    
    post_request = new HttpPost("http://tim-server.hol.es/ru/technologies/4pda/4pda.php?act=saveindex&mode=");  //Адрес сервера. в который посылается запрос
            
    response = httpclient.execute(post_request);
    
    post_request = new HttpPost("http://tim-server.hol.es/poster.php?act=get_pages_list&lang_code=ru&category_code=technologies&parser_code=4pda"); //Адрес сервера. в который посылается запрос
            
    response = httpclient.execute(post_request);
            
    responseEntity = response.getEntity();
    response_string = "news_downloaded|"+EntityUtils.toString(responseEntity, "UTF-8");
    
        }
    else if (key.equals("getnews")){
        post_request = new HttpPost("http://http://tim-server.hol.es/poster.php?act=get_pages_list&lang_code=ru&category_code=technologies&parser_code=4pda&mode=new&last_page_id=201408111988921313"); //Адрес сервера. в который посылается запрос
        response = httpclient.execute(post_request);
        response_string = "new_news_downloaded| ";
            
        }
        
        
    }
    catch (ClientProtocolException e) {        
    }
    catch (IOException e) {    
    } 
    return response_string;
    }
 
    @Override
    protected void onPostExecute(String result) {
    super.onPostExecute(result);
    
    delimiter_position = result.indexOf("|");
    
    key = result.substring(0, delimiter_position);  
    value = result.substring(delimiter_position+1, result.length());
    
    if (key.equals("no")){
    } 
    else if (key.equals("new_news_downloaded")){
        addNewNews(result);
    }
    else if (key.equals("news_downloaded")){
    addNews(result);
    no_internet.setVisibility(View.GONE);
    download_layout.setVisibility(View.GONE);
    lvLayout = new ListViewLayout(MainActivity.this);
    main_layout.addView(lvLayout);
    }
    }
XML
1
2
3
4
5
6
7
8
9
10
<?xml version="1.0" encoding="utf-8"?>
<menu
 xmlns:android="http://schemas.android.com/apk/res/android">
<item
 android:id="@+id/refresh"
 android:icon="@drawable/refresh"
 android:showAsAction="always"
 android:title="Обновить">
</item>
</menu>
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2014, 00:53
Ответы с готовыми решениями:

Смена темы ActionBar при нажатии на кнопку
Подскажите пожалуйста как можно изменить тему ActionBar, при нажатии на кнопку.

Изменение значение при нажатии в actionbar, а именно в option menu
Подскажите как в action bar в выплывающем меню можно было бы настроить параметры не переходя в...

При нажатии на пункт меню скрыть его, и показать другой пункт меню
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и показать другой пункт...

В биосе нет меню Boot при нажатии на F12 при запуске ПК
Здравствуйте, хочу установить Windows 7, но в биосе нет меню Boot, при нажатии на F12 при запуске...

9
105 / 105 / 19
Регистрация: 13.10.2009
Сообщений: 406
15.08.2014, 10:13 2
логи в студию!
0
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 17:51 3
Цитата Сообщение от Muhammad97 Посмотреть сообщение
value = string[0].substring(delimiter_position+1, string[0].length());
попробуй тут просто оставить .substring(delimiter_position+1)
0
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:35  [ТС] 4
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи

Добавлено через 4 минуты
Дел646kapeh064, это не поможет, я запускаю AsyncTask из onCreate с параметрами "getdata| " и все нормально работает
0
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 21:48 5
Цитата Сообщение от Muhammad97 Посмотреть сообщение
это не поможет
А по моему поможет. Ведь функция имеет описание:
Java
1
String substring(int startIndex, int endIndex)
а ты в endIndex передаешь string[0].length(), а т.к. индекс считается с нуля, то тут получается выход за пределы строки.

Добавлено через 56 секунд
Цитата Сообщение от Muhammad97 Посмотреть сообщение
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи
Советую тестировать на GENYMOTION, шустрый эмулятор.
0
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:53  [ТС] 6
Не помогло, кто-нибудь может скомпилировать код?
0
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 22:13 7
Цитата Сообщение от Muhammad97 Посмотреть сообщение
скомпилировать код
Скинь проект
0
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 05:47  [ТС] 8
646kapeh064, вот
Вложения
Тип файла: zip VKCM.zip (2.12 Мб, 7 просмотров)
0
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
16.08.2014, 14:26 9
Лучший ответ Сообщение было отмечено Muhammad97 как решение

Решение

Muhammad97, ошибка NullPointerException вылетает на строке:
Цитата Сообщение от Muhammad97 Посмотреть сообщение
delimiter_position = result.indexOf("|");
в методе onPostExecute, скорее всего это связано с тем, что у тебя возникает исключение в методе doInBackground

А в методе doInBackground ошибка была в строке:
Цитата Сообщение от Muhammad97 Посмотреть сообщение
post_request = new HttpPost("http://http://tim-server.hol.es/poster.php?act=get_pages_list&lang_code=ru&category_code=technologies&parser_cod e=4pda&mode=new&last_page_id=201408111988921313");
Дважды http://http:// в ссылке. Теперь ошибки пропали.

Вывод: настоятельно рекомендую скачать GENYMOTION и тестировать с логами.
1
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 16:01  [ТС] 10
646kapeh064, огромное спасибо за ответ. Больше недели мучился с этой проблемой
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2014, 16:01
Помогаю со студенческими работами здесь

Кнопки. При запуске исчезали, а при нажатии на кнопку появлялись
На форме 3 кнопки(bitbtn) и кнопка (button) при запуске project1 нужно что бы 3 кнопки(bitbtn)...

Действие при нажатии на пункт TTreeView
Здравствуйте, на форме есть компонент TreeView и как пример записанные разделы: Десерт первый...

При запуске Windows автоматически открывается mail.ru и при нажатии на ссылки открываются вредоносные сайты
Подготовленный лог. На ноутбуке установлен Windows 8.1

Сделать так что бы при запуске форма становилась большая, а при нажатии на форму исчезала!
Всем привет! Народ помогите решить задачу, я начинающий.Задача сформулирована так:Сделать так что...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru