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

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

Войти
Регистрация
Восстановить пароль
 
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
#1

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

15.08.2014, 00:53. Просмотров 731. Ответов 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 при нажатии на кнопку - Программирование Android
Подскажите пожалуйста как можно изменить тему ActionBar, при нажатии на кнопку.

При нажатии на пункт меню скрыть его, и показать другой пункт меню - Программирование Android
Прошу помощи, как можно допустим при нажатии на пункт меню, его скрыть, и показать другой пункт меню? я делаю так : public boolean...

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

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

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

Не отображается пункт меню в ActionBar - Программирование Android
Приветствую, Сделал меню &lt;menu xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot; ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Gabberr
102 / 102 / 17
Регистрация: 13.10.2009
Сообщений: 403
15.08.2014, 10:13 #2
логи в студию!
0
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
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 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:35  [ТС] #4
Дело в том, что я перекидываю скомпилированный APK на смартфон и не могу смотреть логи

Добавлено через 4 минуты
Дел646kapeh064, это не поможет, я запускаю AsyncTask из onCreate с параметрами "getdata| " и все нормально работает
0
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
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 / 1
Регистрация: 10.11.2013
Сообщений: 238
15.08.2014, 21:53  [ТС] #6
Не помогло, кто-нибудь может скомпилировать код?
0
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
15.08.2014, 22:13 #7
Цитата Сообщение от Muhammad97 Посмотреть сообщение
скомпилировать код
Скинь проект
0
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 05:47  [ТС] #8
646kapeh064, вот
0
Вложения
Тип файла: zip VKCM.zip (2.12 Мб, 6 просмотров)
646kapeh064
59 / 58 / 15
Регистрация: 09.12.2013
Сообщений: 206
16.08.2014, 14:26 #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 и тестировать с логами.
1
Muhammad97
10 / 10 / 1
Регистрация: 10.11.2013
Сообщений: 238
16.08.2014, 16:01  [ТС] #10
646kapeh064, огромное спасибо за ответ. Больше недели мучился с этой проблемой
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.08.2014, 16:01
Привет! Вот еще темы с ответами:

Не работает первый пункт ActionBar Actions - Программирование Android
Здравствуйте! Проблема с Menu в Fragment-е: Вот код фрагмента: package com.contedevel.qpicseditor; import android.app.Activity; ...

Ошибка при нажатии - Программирование Android
делаю приложение по урокам http://dajver.blogspot.com/2012/01/android-4-ontouchevent.html GameView.java public class GameView...

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

Ошибка при запуске - Программирование Android
Здравствуйте. Возникает ошибка при вызове getLastKnownLocation.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
16.08.2014, 16:01
Ответ Создать тему
Опции темы

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