Почему моя отладка android постоянно терпит неудачу?
У меня есть небольшое приложение, которое я пытаюсь запустить на своем телефоне, когда я его создаю, чтобы посмотреть, все ли идет правильно. Неприятности начинаются в
onCreate
в MainActivity
, который выглядит следующим образом:public class MainActivity extends ListActivity { public static final String TAG = "MAIN"; public static final String WEIGHTS_DIR = "/weights/input"; // TODO Get this dir from app settings. // Keeps the filename whenever a user selects a file. Used when the user taps the 'Process' buttob. private String selectedFileName = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.d(TAG, "Completed 'setContentView'."); String topDir = Environment.getExternalStorageDirectory().getAbsolutePath() + WEIGHTS_DIR; List<String> input_files = FileHelper.getInputFileNames(topDir); Log.i(TAG, getString(input_files.size()) + " input files found."); // ListAdapter listAdapter = new ArrayAdapter<>(this, R.layout.list_item, R.id.files_list, input_files); // setListAdapter(listAdapter); // final ListView listView = getListView(); // listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); }
Прежде чем я добавлю
ListView
код, теперь закомментированный, приложение запускается на моем устройстве, и отладка работает хорошо, останавливаясь в точках останова, исследуя переменные и т. д.Как только я добавляю этот код, я получаю следующие сообщения:
Connected to the target VM, address: 'localhost:8610', transport: 'socket' Disconnected from the target VM, address: 'localhost:8610', transport: 'socket'
с "отключенным" сразу после "подключенным", где, когда все было еще хорошо, я получал только" подключенный", и основной макет отображался на телефоне.
Затем по телефону я очищаю данные приложения, удаляю его и комментирую
ListView
код, но отладка остается нарушенной, а мгновенное "отключение" все еще существует. Я подозреваю, что какой-то артефакт в выводе Android Studio не удаляется при перестройке, даже после того, как я сделаю чистку. Как только отладка нарушается подобным образом, она также действует нарушенно на эмуляторе телефона и эмуляторе Nexus 9, так что на самом деле она не выглядит специфичной для конкретного устройства.Стоит отметить, что если я сделаю git reset на ветке, которую я создаю перед добавлением
ListView
код, затем отладка снова работает.Что я уже пробовал:
Мне не нужно много пробовать - я полный новичок в Android. Если я скопирую весь код, за вычетом материала ListView, в новый проект, отладка снова заработает. Я попробовал точку останова в первой строке материала ListView, поэтому он не выполняется до тех пор, пока я не захочу, но отладка все равно прерывается, как только я добавляю этот код. FileHelper - это мой собственный класс, и getInputFileNames отлично работает и возвращает все файлы в данном каталоге.
Richard MacCutchan
Скорее всего, в закомментированном коде есть нулевая ссылка или что-то подобное, что обычно приводит к сбою тестируемого приложения. Я бы проверил имена ваших элементов ресурсов и убедился, что они присутствуют в окончательном построенном приложении. Обычно лучше всего использовать findViewById
проверять их.
Darren_vms
Make setListAdapter( listAdapter); последний вызов