Перебирается массив объектов по наличию в них искомой пользователем строки. При попытке в foreach-цикле перебрать все элементы массива, приложение вылетает. Вот вывод монитора и код, инициирующий сортировку:`
09-03 19:15:41.625 14939-14939/com.info.my.tyranidinfo E/AndroidRuntime:
FATAL EXCEPTION: main Process: com.info.my.tyranidinfo, PID: 14939
java.lang.ExceptionInInitializerError at com.info.my.tyranidinfo.AllUnitFragment.update(AllUnitFragment.java:73)
at com.info.my.tyranidinfo.AllUnitFragment.onCreateView(AllUnitFragment.java:54)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=2; index=2
at com.info.my.tyranidinfo.dummy.DummyContent.(DummyContent.java:19)
at com.info.my.tyranidinfo.AllUnitFragment.update(AllUnitFragment.java:73)
at com.info.my.tyranidinfo.AllUnitFragment.onCreateView(AllUnitFragment.java:54)
at android.support.v4.app.Fragment.performCreateView(Fragment.java:2239)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1332)
at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1574)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1641)
at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:794)
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2415)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2200)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2153)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2063)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:725)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
,
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.info.my.tyranidinfo.dummy.DummyContent;
import com.info.my.tyranidinfo.dummy.DummyContent.DummyItem;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class AllUnitFragment extends Fragment {
private StringBuilder search = new StringBuilder("");
RecyclerView mRecyclerView;
AllUnitAdapter mAdapter;
public AllUnitFragment() {
}
public void setSearch(CharSequence search) {
this.search.setLength(0);
this.search.append(search);
}
public static AllUnitFragment newInstance(int columnCount) {
AllUnitFragment fragment = new AllUnitFragment();
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_unit_list, container, false);
if (view instanceof RecyclerView) {
Context context = view.getContext();
mRecyclerView = (RecyclerView) view;
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
update();
}
return view;
}
public void update() {
List<DummyItem> list = new ArrayList<DummyItem>();
if (!search.toString().equals("")){
for (DummyItem dummyItem : DummyContent.ITEMS) { //здесь возникает ошибка
if (dummyItem.FirstName.contains(search)) {
list.add(dummyItem);
}
if (dummyItem.SecondName.contains(search)) {
DummyItem item = new DummyItem(dummyItem.SecondName, dummyItem.FirstName, dummyItem.details);
list.add(item);
}
}
} else {
for (DummyItem dummyItem : DummyContent.ITEMS) { //или здесь
list.add(dummyItem);
}
}
mAdapter = new AllUnitAdapter(list);
mRecyclerView.setAdapter(mAdapter);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
}
@Override
public void onDetach() {
super.onDetach();
}
Объясните, как исправить, и если можно, когда возникает такая ошибка. Заранее благодарю.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Создал необходимые классы-сущности, аннотации, подключение, всё работаетХочу добавить в "подключаемое" поле, тип которого MainCountryEntity, значение...
Нужно описать 2 класса, подскажите правильно ли я это сделал? Если нет подскажите как сделать правильноЗаранее спасибо
Как можно хранить в одном массиве (1)ссылки на другой массив(2)Производя изменения во втором массиве менялись значения в первом