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

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

Восстановить пароль Регистрация
 
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 00:53     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #1
Здравствуйте, почему при нажатии на пункт 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>
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 00:53     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Посмотрите здесь:

Android Как при нажатии на пункт ListView перейти на другую форму
Ошибка при запуске Android
Получить id записи в бд при нажатии на пункт списка Android
Android Ошибка при запуске эмулятора
Не отображается пункт меню в ActionBar Android
Не работает первый пункт ActionBar Actions Android
При нажатии на пункт меню открыть новое активити Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gabberr
 Аватар для Gabberr
101 / 101 / 17
Регистрация: 13.10.2009
Сообщений: 402
15.08.2014, 10:13     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #2
логи в студию!
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 17:51     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #3
Цитата Сообщение от Muhammad97 Посмотреть сообщение
value = string[0].substring(delimiter_position+1, string[0].length());
попробуй тут просто оставить .substring(delimiter_position+1)
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:35  [ТС]     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #4
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи

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

Добавлено через 56 секунд
Цитата Сообщение от Muhammad97 Посмотреть сообщение
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи
Советую тестировать на GENYMOTION, шустрый эмулятор.
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:53  [ТС]     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #6
Не помогло, кто-нибудь может скомпилировать код?
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
15.08.2014, 22:13     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #7
Цитата Сообщение от Muhammad97 Посмотреть сообщение
скомпилировать код
Скинь проект
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 05:47  [ТС]     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #8
646kapeh064, вот
Вложения
Тип файла: zip VKCM.zip (2.12 Мб, 6 просмотров)
646kapeh064
 Аватар для 646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 208
16.08.2014, 14:26     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #9
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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=201408111988921313");
Дважды http://http:// в ссылке. Теперь ошибки пропали.

Вывод: настоятельно рекомендую скачать GENYMOTION и тестировать с логами.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 16:01     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Еще ссылки по теме:

Android Смена темы ActionBar при нажатии на кнопку
Android Ошибка при нажатии
[INSTALL_FAILED_INVALID_APK] - ошибка при запуске Android
Android Ошибка при запуске VM VB
Ошибка при запуске Android

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

Или воспользуйтесь поиском по форуму:
Muhammad97
 Аватар для Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 16:01  [ТС]     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar #10
646kapeh064, огромное спасибо за ответ. Больше недели мучился с этой проблемой
Yandex
Объявления
16.08.2014, 16:01     Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Ответ Создать тему
Опции темы

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