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

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar - Программирование Android

15.08.2014, 00:53. Просмотров 784. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 00:53
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка при запуске AsyncTask при нажатии на пункт ActionBar (Программирование Android):

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

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

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

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

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

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

9
Gabberr
103 / 103 / 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
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 Мб, 6 просмотров)
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 16:01
Привет! Вот еще темы с решениями:

Не отображается пункт меню в ActionBar
Приветствую, Сделал меню &lt;menu...

Не работает первый пункт ActionBar Actions
Здравствуйте! Проблема с Menu в Fragment-е: Вот код фрагмента: package...

Ошибка при нажатии
делаю приложение по урокам...

Ошибка при запуске
При запуске приложения выводит ошибку: &quot;В приложении &quot;Saint switcher&quot; произошла...


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

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

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