2016-05-18 1 views
-1

Доброе утро всем. Для того, чтобы иметь автозаполнение EditText, который может найти последовательность символов между скобками или скобками Я после этого AutoCompleteTextView not completing words inside parentheses но CustomArrayAdapter я создал внесшие NoClassDefFoundError:NoClassDefFoundError на пользовательских ArrayAdapter

E/AndroidRuntime: FATAL EXCEPTION: main 
    Process: com.paullemesnager.flashbac, PID: 4665 
    java.lang.NoClassDefFoundError: com.paullemesnager.flashbac.CustomArrayAdapter 
    at com.paullemesnager.flashbac.SelectAssocActivity.onCreate(SelectAssocActivity.java:64) 
    at android.app.Activity.performCreate(Activity.java:5990) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2332) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2442) 
    at android.app.ActivityThread.access$800(ActivityThread.java:156) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1351) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:211) 
    at android.app.ActivityThread.main(ActivityThread.java:5373) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:372) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815) 

Я не могу понять, почему я получаю эту ошибку и как его решить, может ли кто-нибудь мне помочь?

EDIT: код CustomArrayAdapter такой же, как here, но я изменил один класс:

private class ArrayFilter extends Filter { 
    @Override 
    protected FilterResults performFiltering(CharSequence prefix) { 
     FilterResults results = new FilterResults(); 

     if (mOriginalValues == null) { 
      synchronized (mLock) { 
       mOriginalValues = new ArrayList<T>(mObjects); 
      } 
     } 

     if (prefix == null || prefix.length() == 0) { 
      ArrayList<T> list; 
      synchronized (mLock) { 
       list = new ArrayList<T>(mOriginalValues); 
      } 
      results.values = list; 
      results.count = list.size(); 
     } else { 
      String prefixString = prefix.toString().toLowerCase(); 

      ArrayList<T> values; 
      synchronized (mLock) { 
       values = new ArrayList<T>(mOriginalValues); 
      } 

      final int count = values.size(); 
      final ArrayList<T> newValues = new ArrayList<T>(); 

      for (int i = 0; i < count; i++) { 
       final T value = values.get(i); 
       final String valueText = value.toString().toLowerCase(); 

       // First match against the whole, non-splitted value 
       if (valueText.startsWith(prefixString)) { 
        newValues.add(value); 
       } else { 
        final String[] words = valueText.split(" "); 
        final int wordCount = words.length; 

        // Start at index 0, in case valueText starts with space(s) 
        for (int k = 0; k < wordCount; k++) { 
         if (words[k].startsWith(prefixString)) { 
          newValues.add(value); 
          break; 
         } 
        } 
       } 
      } 

      results.values = newValues; 
      results.count = newValues.size(); 
     } 

     return results; 
    } 

    @Override 
    protected void publishResults(CharSequence constraint, FilterResults results) { 
     //noinspection unchecked 
     mObjects = (List<T>) results.values; 
     if (results.count > 0) { 
      notifyDataSetChanged(); 
     } else { 
      notifyDataSetInvalidated(); 
     } 
    } 
} 

EDIT 2: В соответствии с просьбой здесь, как я создаю объект CustomArrayAdapter:

 public class SelectAssocActivity extends AppCompatActivity { 
     private CustomArrayAdapter<String> adapterA; 

     . 
     . 
     . 

    lv = (ListView) findViewById(R.id.lvAssoc); 
    textView = (AutoCompleteTextView) findViewById(R.id.editTextAssoc); 
    adapterA = new CustomArrayAdapter<>(this, android.R.layout.simple_list_item_1, associations); 
    lv.setAdapter(adapterA); 

CustomArrayAdapter .java:

Путь к двум файлам:

app\src\main\java\com\paullemesnager\flashbac\CustomArrayAdapter.java 
app\src\main\java\com\paullemesnager\flashbac\SelectAssocActivity.java 
+0

введите код – Vyacheslav

ответ

0

Javadoc являются довольно понятны

https://docs.oracle.com/javase/7/docs/api/java/lang/NoClassDefFoundError.html

Брошенный, если виртуальная машина Java или экземпляр ClassLoader пытается нагрузки в определении класса (как часть нормального вызов метода или как часть создания нового экземпляра с использованием нового выражения) и не может быть найдено определение класса . Определение типа поиска существовало, когда выполняемый в данный момент класс был скомпилирован, , но определение больше не может быть найдено.

Обычно это означает, что на время выполнения банку, который содержит ваш класс CustomArrayAdapter отсутствует

+0

Спасибо за ваше время. Как я могу это решить? –

0

Как вы можете видеть в журналах, ошибка происходит в:

java.lang.NoClassDefFoundError: com.paullemesnager.flashbac.CustomArrayAdapter 
com.paullemesnager.flashbac.SelectAssocActivity.onCreate(SelectAssocActivity.java:64) 
... 

Итак, вы должны откройте SelectAssocActivity.java, найдите строку 64 и проверьте, что вы там написали.

Кажется, что вы попытались создать некоторый объект типа CustomArrayAdapter. Однако этого класса не существует (NoClassDefFoundError).

Я проверил ссылку, которую вы опубликовали. Название этого класса: ArrayAdapter, а не CustomArrayAdapter.

public class ArrayAdapter<T> extends BaseAdapter implements Filterable, ThemedSpinnerAdapter { 
    ... 
} 

Таким образом, проверить SelectAssocActivity.java, строка 64, и если изменить тип объекта из CustomArrayAdapter в ArrayAdapter.

+0

В ссылке, которую я опубликовал, он рекомендовал переименовать класс, вот что я сделал. Мое имя класса - CustomArrayAdapter, поэтому я не понял, почему он не найден. Здесь строка 64: 'adapterA = новый CustomArrayAdapter <> (это, android.R.layout.simple_list_item_1, ассоциации); ' У вас есть еще одна подсказка? Спасибо за ваше время. –

+0

@PaulLemesnager Не могли бы вы обновить свой ответ и добавить определение адаптера (CustomArrayAdapter.java) и поделиться, как вы создаете объект CustomArrayAdapter? Отправьте их в свой ответ, пожалуйста ... также, поделитесь тем путем, где вы сохраняете эти файлы (относительный путь только ... внутри папки приложения) – W0rmH0le

+0

См. «РЕДАКТИРОВАТЬ 2», я не понял все, что вы говорите, есть все, что вы просили? –

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

  • Нет связанных вопросов^_^