Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
1

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

15.08.2014, 00:53. Просмотров 829. Ответов 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)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 00:53
Ответы с готовыми решениями:

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

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

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

Получить id записи в бд при нажатии на пункт списка
У меня такой вопрос: Есть список ListView который заполняется данными из Базы (SQLite). Мне...

При нажатии на пункт меню открыть новое активити
Как сделать на андроид 4.0 чтобы при нажатии на пункт меню открывалось новое активити? Всплывающий...

9
Gabberr
104 / 104 / 19
Регистрация: 13.10.2009
Сообщений: 404
15.08.2014, 10:13 2
логи в студию!
0
646kapeh064
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
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:35  [ТС] 4
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи

Добавлено через 4 минуты
Дел646kapeh064, это не поможет, я запускаю AsyncTask из onCreate с параметрами "getdata| " и все нормально работает
0
15.08.2014, 21:35
646kapeh064
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
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:53  [ТС] 6
Не помогло, кто-нибудь может скомпилировать код?
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 22:13 7
Цитата Сообщение от Muhammad97 Посмотреть сообщение
скомпилировать код
Скинь проект
0
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 05:47  [ТС] 8
646kapeh064, вот
0
Вложения
Тип файла: zip VKCM.zip (2.12 Мб, 7 просмотров)
646kapeh064
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_code=4pda&mode=new&last_page_id=20140811198 8921313");
Дважды http://http:// в ссылке. Теперь ошибки пропали.

Вывод: настоятельно рекомендую скачать GENYMOTION и тестировать с логами.
1
Muhammad97
10 / 10 / 2
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 16:01  [ТС] 10
646kapeh064, огромное спасибо за ответ. Больше недели мучился с этой проблемой
0
16.08.2014, 16:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 16:01

Как при нажатии на пункт ListView перейти на другую форму
Здравствуйте! У меня возникла проблема при работе с ListView. Суть проблему заключается в следующем...

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

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


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

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

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