Вопрос

Я замедляю обучение и строительство моего первого приложения для Android. Я очень новичок в Java, но уже сделали пару проектов в C #, VB.NET (обратно в день), overycive-C (иметь 6 приложений в магазине) и Fortran (WAAAAAAAAAAAAAAAAAAAAAA, обратно в день;)

Итак, я только что получил от зарубежных HTC легенды (я не в США), которую я купил, чтобы иметь приличное устройство среднего уровня для развития (он работает без укоренившегося Adnroid 2.1)

Приложение, которое я развиваю, является целевой уровень 4 (Android 1.6). Он использует базу данных 5 МБ SQLite3 с расширением .mp3, чтобы избежать сжатия в APK и правильное копирование от активов в системную папку.

Все это отлично работает на эмуляторе, а на устройстве я вижу, что размер файла приложения после копирования базы данных совпадает именно то, что я вижу на эмуляторе.

Теперь, по моему основным видам деятельности со списком View и Spinner, я связываю некоторые данные через два адаптера массива. При работе на устройстве все гладко. Но при попытке запустить на устройстве эту часть кода:

public class mainAct extends Activity implements OnItemSelectedListener, TextWatcher, OnItemClickListener
{   
        /** members */
        //private EditText searchtext;
        private ListView designations;
        private ArrayAdapter<String> adapterShapes;
        private ArrayAdapter<String> adapterTypes;
        private Spinner types;
      .  
      .  
      .    
    public void onCreate(Bundle savedInstanceState)   
    {  
      .  
      .  
      .    
        // DESIGNATIONS  
        // 
        adapterShapes = new ArrayAdapter<String>(this,R.layout.list_item,shapes);       // custom TextView Adapter  
        designations=(ListView)findViewById(R.id.designations);
        Log.e("MAIN.ACCT", "ok to 172");
        designations.setAdapter(adapterShapes);
        Log.e("MAIN.ACCT", "ok to 174");
        designations.setOnItemClickListener(this);

        // TYPES
        //
        adapterTypes=new ArrayAdapter<String>(this,R.layout.spinner_item,DT.get().typesInLibrary);
        types=(Spinner)findViewById(R.id.types);
        types.setAdapter(adapterTypes);
        types.setOnItemSelectedListener(this);
      .  
      .  
      .  
    }
}

Оба обозначения. SetaDAppter (адаптерапии);
& types.setadapter (adaptertypes);

Дайте мне нулевый указатель исключения.

Я использую Eclipse под Mac, окно Logcat бросает:

06-25 18: 41: 37.842: Ошибка / Androidruntime (9523): беспрепятственный обработчик: резьба Основная выход из-за неуклюжего исключения

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): java.lang.runtimeexception: Невозможно запустить активность ComponentInfo {com.davidhomes.steel / com.davidhomes.steel.mainact}: java.lang.nultpointerexception

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): на Android.app.activityTriad.performlaunchactivity (Activitythread.java:2596)

06-25 18: 41: 37.891: ошибка / Androidruntime (9523): в

android.app.activityTriad.handlelaunchactivity (ActivityThread.java:2621)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): на android.app.activityTrEAD.access $ 2200 (Activitythread.java:126)

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): на Android.app.activityThread $ h.handlemessage (Activitythread.java:1932)

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): на Android.os.handler.dispatchmessage (Handler.java:9h)

06-25 18: 41: 37.891: ошибка / androidruntime (9523): на android.os.looper.loop (looper.java:123)

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): в Android.app.activityTrEAD.Main (ActivityThread.java:4595)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): на java.lang.reflect.method.invebalative (родной метод)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): на java.lang.reflect.method.invoke (метод.java:521)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): на com.android.internal.os.zygoteinit $ methodArdardargscaller.run (zygoteinit.java:860)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): на com.android.internal.os.zygoteinit.main (zygoteinit.java:618)

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): в dalvik.system.nativeStart.main (родной метод)

06-25 18: 41: 37.891: Ошибка / androidruntime (9523): вызвано: java.lang.nullpointexception


------------------------------------------------------- ------------- 06-25 18: 41: 37.891: Ошибка / androidruntime (9523): в com.davidhomes.steel.mainact.oncreate (mainact.java:183)

--------------------------------------------------------------

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): на Android.app.instrumentation.callactivyOncreate (приборивание.java:1047)

06-25 18: 41: 37.891: Ошибка / Androidruntime (9523): в Android.app.activityTriad.performlaunchactivity (Activitythread.java:2544)

06-25 18: 41: 37.891: ошибка / Androidruntime (9523): ... еще много

06-25 18: 46: 38.252: Ошибка / ActivityManager (99): не удалось установить верхнее приложение!

LINE 183 - первый настроек SetAdapter (обозначения. SetaDAdapter (адаптерапии);), когда я комментирую это, второй сепарадовый файл - один последний код

Здесь я немного потерян, адаптеры показывают правильное количество элементов в окне журнала при работе с симулятора и устройства.

Я признаю, что буду нуб как Java, так и для Android, поэтому любая помощь высоко ценится.

С Уважением
Дэйвид

Это было полезно?

Решение 2

Упс! Это была моя вина, как-то, как-то у меня было два макета (одна для разных разрешений), тот, который используется на моем устройстве, не имел правильного IDView и ID спиннера. Эта альтернативная планировка рухнула в папку, и я просто забыл об этом (я приостановил разработку приложения около 2 месяцев, пока я на самом деле не получил устройство для тестирования).

Один работает нормально, был установлен на симуляторе, но не на устройстве и наоборот, странно, как хороший, соответствует разрешению моего устройства (я почти уверен, что я тоже там не хватает, но сейчас не важно)

Тем не менее, благодаря Крису за то, что указываю на то, что указываю на то, чтобы посмотреть на нулевое возвращаемое значение на FindViewById. Быть новым на андроид, я был потерян, чтобы начать

С наилучшими пожеланиями Дэвида

Другие советы

Ну, как вы, наверное, выяснили себя, некоторая переменная NULL. К сожалению, в вашем коде нет очевидного источника NullPointexception в вашем коде.

Следовательно, вы должны сначала попытаться определить, какую переменную NULL, и, следовательно, вызывая исключение.

Например, findviewbyid. Возвращает NULL, если он не может найти представление, так что вы можете дважды проверить ListView а также Spinner назначаются должным образом.

Конечно, проблема может быть с вашим ArrayAdapterS, так что вы также должны их проверить, но с вашего вопроса звучит, как будто вы уже сделали это.

Как только вы (и мы) точно знаете, где происходит NullPointerException, будет проще дать более конкретный совет

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

То, что я сделал, был очень глупым. Я забыл добавить ссылку на XML. т.е. setcontentview (r.layout.settings);

На самом деле это выглядит как оригинальный пост, возможно, также забыл это, поэтому я подумал, что просто опубликую это. Ваше здоровье.

У меня такая же проблема. Я положил логинские сообщения в печати каждого объекта. Оказалось, что мой объект ListView был «нолью». Причина этого была у меня была неправильная деятельность XML, перечисленной в моем SetContentView. Я думаю, что самый простой способ отладить эту проблему, сохраняют ввод в лог.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top