Для вопроса 1):
Учитывая, что в сообщении об ошибке не говорится, какая строка вашего кода вызывает проблему, вы можете отследить ее, используя точки останова. Точки останова приостанавливают выполнение программы, когда программа попадает в определенные строки кода. Добавляя точки останова в критические места, вы можете определить, какая строка кода вызывает сбой. Например, если ваша программа падает в строке setContentView (), вы можете поставить точку останова там. Когда программа запускается, она останавливается перед запуском этой строки. Если при возобновлении происходит сбой программы до достижения следующей точки останова, вы знаете, что линия, которая убила программу, была между двумя точками останова.
Добавление точек останова легко, если вы используете Eclipse. Щелкните правой кнопкой мыши на поле слева от вашего кода и выберите «Переключить точку останова». Затем вам нужно запустить приложение в режиме отладки, кнопка, которая выглядит как зеленое насекомое рядом с кнопкой обычного запуска. Когда программа достигает точки останова, Eclipse переключится на перспективу отладки и покажет вам линию, в которой она ожидает. Чтобы снова запустить программу, найдите кнопку «Возобновить», которая выглядит как обычное «Воспроизведение», но с вертикальной чертой слева от треугольника.
Вы также можете заполнить ваше приложение Log.d («Мое приложение», «Некоторая информация здесь, которая сообщает вам, где находится строка журнала»), которое затем публикует сообщения в окне Eclipse LogCat. Если вы не можете найти это окно, откройте его с помощью Window -> Show View -> Other ... -> Android -> LogCat.
Надеюсь, это поможет!