2010-11-16 1 views
0

В моем проекте андроида у меня есть простой файл Java, который получает содержимое веб-страницы, что-то делает с текстом и возвращает текст как String. Этот текст я показываю в ScrollView в другом мероприятии на Android.Странная проблема с Android, программа компилируется, но не работает

Он работает нормально, но проблема возникает, когда я пытаюсь манипулировать текстом в этом файле Java. Я пытался с массивами, он не работал, а затем переключился на String, все равно ничего. Это всего лишь особый метод, который не может обеспечить какой-либо вывод, но программа компилируется в порядке.

Тем не менее, тот же метод при попытке реализовать проект Java в Eclipse работает отлично.

Вот мой код:

// This method will return selected stripped text extracted from rawData 
public static String FillMenus(String rawData){ 
    String resulT = ""; 
    int c1, c2; 
    for(int i=0; i<11; i++){ 
     c1 = rawData.indexOf("\" width=\"50px\" />") + 17; 
     c2 = rawData.indexOf(" €</td>") + 2; 

     if (c1==16 || c2==1) break; 
     if (c1<=c2){ 
      resulT = resulT+"\n"+ rawData.substring(c1, c2); 
      rawData = rawData.substring(c2); 
     } 
     if (c1>c2){ 
      resulT = resulT+"\n"+StripTag((rawData.substring(0, c2))); 
      rawData = rawData.substring(c2); 
     } 
    } 
    return resulT; 
} 

Если нет ничего плохого в этом методе, то почему она не дает никакого выхода? Если я верну rawData на Android, телефон отобразит все правильно. Если я верну результат вывода String, он все пуст в телефоне.

Если я вызываю этот метод (скажем, созданный в классе ABC) в другом тестовом классе (test.java) внутри того же Android-проекта, скажем, с String a = ABC.FillMenus(String b), есть что-то странное. Я получаю ошибку компилятора, в то время как на телефоне Android отображается пустое место. И то же самое, что вызвано из Java-проекта, работает абсолютно нормально.

Есть ли что-то, что мне не хватает?

+0

Покажите нам, что вы делаете с возвращаемым значением этой функции. – Falmarri

+1

«Программа компилируется, но не работает». Добро пожаловать в программирование;) –

+0

«Я получаю ошибку компилятора»: не могли бы вы указать, какую ошибку? Может быть, вы знаете. Я предполагаю, что вы сделали опечатку и означали ABC.FillMenus (b). Если нет, есть ваша ошибка. Если да, то вы импортировали класс, если он находится в другом пакете? – JRL

ответ

1

Несколько вещей

1) что вы за цикл для?

2) если (с1 < = c2), и если (c1> c2) являются исключительными, поэтому я рекомендовал бы изменить, если (c1> c2) к другой (помогает в будущем, когда вы хотите изменить свой код)

3) вы должны привести результат к null больше, чем "", это поможет вам протестировать на выходе FillMenu, чтобы узнать, когда ваш код был пропущен или когда нет значений.

Теперь я предполагаю, что по какой-то причине if (c1 == 16 || c2 == 1) break; и поэтому resultT никогда не изменяется, поэтому существует пусто.

вы должны запустить этот код в отладки и поставить точку останова в нем, следить в частности, значения c1 c2

часть формы, что я не думаю, что есть достаточно информации, чтобы помочь вам больше

Jason

+0

Привет, Джейсон. На самом деле я снова просмотрел весь код в режиме отладки и обнаружил, что цикл разбивается на первый attemt на c2 == 1 и возвращает пустое "". Однако для того же текстового (String) ввода он по какой-то причине не разбивается на Java Compiler и отлично работает. Однако, после дополнительной отладки, я обнаружил, что в андроиде есть некорректное несоответствие символов. Телефон не читает символ ЕВРО и не показывает его.Я попытался заменить его на replace или replaceAll, но он просто не работает, поскольку телефон Android не читает этот символ, возвращенный с html-страницы. Что мне делать?? – Rizwan

+0

Пожалуйста, посмотрите на rawtext здесь: http://img132.imageshack.us/img132/1692/problembj.jpg Моя строка поиска содержит этот текст «€», в котором символ евро показывает что-то неизвестное в эмуляторе Android , Я не могу просто понять, как его изменить, в то время как этот момент является важным окончанием символов, поскольку я должен искать то же самое примерно в 8-10 веб-страницах в разных местах. Есть ли какое-либо обходное решение, чтобы изменить его на нечто узнаваемое в android. Проблема в том же характере отлично работает в компиляторе Java, и она работает хорошо. Но в среде Android это не по какой-то причине. Пожалуйста помоги! – Rizwan

+0

UPDATE: Я проверил кодировку веб-сервера, и это был ISO-8859-1. Я подумал, что, возможно, это отличается от стандартного использования, поэтому я использовал метод getBytes («ISO-8859-1»), чтобы преобразовать его в стандарт. вот ответ rawText, который я получаю сейчас: http://img245.imageshack.us/img245/4310/problem2b.jpg Я понятия не имею, но я действительно верю, что это причина проблемы. У вас есть какой-либо вклад в этом отношении. – Rizwan

Смежные вопросы