2013-07-23 2 views
3

В любом случае, скажите, почему пропущено следующее утверждение if? Я хочу, чтобы проверить, если мой mAlphabetCode содержит 0-9 буквальным, а не от 0 до 9.Почему это утверждение if пропущено?

 // check if alphabet code is numeric 
     if (mAlphabetCode.equals("0-9")){ 
      mAlphabetCode = "-"; 
     } 

Вот весь код:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

    if (parent.getId() == R.id.lv_gl_content) { 
     // store data to be pass 
     Intent mIntent = new Intent(this, AchList.class); 
     mIntent.putExtra("mPageUrl", mGameList.get(position).getItemPageUrl()); 
     mIntent.putExtra("mGameTitle", mGameList.get(position).getTitle()); 

     // start activity and page animation 
     startActivity(mIntent); 
     mPageTrans.slideIn(); 

    } else if (parent.getId() == R.id.lv_alphabet_content) { 
     // get alphabet code 
     String mAlphabetCode = parent.getAdapter().getItem(position).toString().toLowerCase(); 

     // check if alphabet code is numeric 
     if (mAlphabetCode.equals("0-9")){ 
      mAlphabetCode = "-"; 
     } 

     // build page url 
     mGameListUrl = mGameListUrl.substring(0, (mGameListUrl.length() - 2)) + mAlphabetCode + "/"; 

     mAlphabetMenu.setItemChecked(position, true); 

     // close browsing menu 
     mSlidingPane.closePane(); 

     // make network request 
     mStringRequest = new StringRequest(Request.Method.GET, mGameListUrl, onSuccess(), onError()); 
     mRequestQueue.add(mStringRequest); 
    } 
} 

И вот что отладчик говорят, что mAlphabetCode содержит до того ударять, если заявление:

enter image description here

Моя ошибка была здесь в моем файле strings.xml:

<!-- strings of arrays --> 
<string-array name="slide_menu_alphabet"> 
    <item>0&#8211;9</item> 

я изменил деталь от 0-9 до 0 & # 8211; 9 (расположены так, цифры показывают) подвергнутую и благодаря @ user1873880 и Дэвид Чезарино AndroidStudio IDE, я изменен на 0 & # 45; 9 (разнесенные так цифры показывают), и теперь он отлично работает.

Спасибо за помощь.

+1

Я считаю, что он этого хочет, так как его отладчик показывает, что его строка содержит литерал «0-9». EDIT: В ответ на удаленный комментарий о @ Twenty40, который хочет проверить отдельные цифры с 0 по 9, в отличие от указанного литерала. – Kon

+0

Да, я хочу проверить, содержит ли мой mAlphabetCode 0-9 литерал, а не 0-9. – iamrelos

ответ

6

Проблема в том, что символ «-» в вашем коде на самом деле имеет целое число 45, а в отладчике - 8211, что означает, что это другой символ. Вы можете проверить это через некоторые журналы, просто попробуйте увидеть это значение (int) '-'.

+0

Это единственный правильный ответ, на мой взгляд. Я считаю, что ASCII 8211 - это двойная тире, выглядит чуть длиннее. – Kon

+3

Точно. Поскольку он ответил первым (справедливое для принятия), я добавлю подробности здесь: en-dash (# 8211, «-») очень хорошо известен в типографских кругах и очень отличается (вычисляется и семантически), чем дефис («-»), который мы обычно вводим клавишей клавиатуры (- и = ключ). Например, правила Lint уделяют этому много внимания, и очень часто возникает вопрос об извлечении строки из строк XML, считая, что это дефис (частый источник замешательства, который я вижу). В этом случае он пишет свой код с помощью клавиш клавиатуры (дефис), но сравнивается с строкой с тире. :-) – davidcesarino

+0

Кстати ... Я уроженец типографии. Ты заметил? ;-) – davidcesarino

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