Brady Kelly Ответов: 0

Почему моя отладка 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); последний вызов

0 Ответов