Я медленно учусь и создаю свое первое приложение для Android. Я ОЧЕНЬ новичок в Java, но уже выполнил пару проектов на C #, VB.NET (в прошлом), Objective-C (в магазине 6 приложений) и Fortran (waaaaaaaaaaaaaaaaaaaay назад в тот день;)
Итак, я только что получил из-за рубежа легенду htc (я не в США), которую я купил, чтобы иметь приличное устройство среднего уровня для разработки (на нем работает некорневый adnroid 2.1)
Приложение, которое я разрабатывал, имеет целевой уровень 4 (Android 1.6). Он использует базу данных sqlite3 объемом 5 Мб с расширением .mp3, чтобы избежать сжатия внутри apk и правильного копирования из ресурсов в системную папку.
На эмуляторе все работает нормально, и на устройстве я вижу, что размер файла приложения после копирования базы данных точно соответствует тому, что я вижу на эмуляторе.
Теперь, в моей основной деятельности с просмотром списка и вращением, я связываю некоторые данные через два адаптера массива. при работе на устройстве все делает плавно. но при попытке запустить на устройстве эту часть кода:
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);
.
.
.
}
}
Оба обозначения .setAdapter (adapterShapes);
& types.setAdapter (adapterTypes);
дай мне исключение Null Pointer.
Я использую Eclipse под Mac, окно LogCat выдает:
06-25 18: 41: 37.842:
ОШИБКА / AndroidRuntime (9523): Uncaught
обработчик: основной выход потока из-за
необученное исключение
06-25 18: 41: 37,891:
ОШИБКА / AndroidRuntime (9523):
java.lang.RuntimeException: невозможно
начать деятельность
ComponentInfo {com.davidhomes.steel / com.davidhomes.steel.mainAct}:
java.lang.NullPointerException
06-25 18: 41: 37,891:
ОШИБКА / AndroidRuntime (9523): в
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2596)
06-25 18: 41: 37,891:
ОШИБКА / AndroidRuntime (9523): в
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2621)
06-25 18: 41: 37,891:
ОШИБКА / AndroidRuntime (9523): в
android.app.ActivityThread.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:99)
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.ActivityThread.main (ActivityThread.java:4595)
06-25 18: 41: 37,891:
ОШИБКА / AndroidRuntime (9523): в
java.lang.reflect.Method.invokeNative (Native
Метод)
06-25 18: 41: 37.891:
ОШИБКА / AndroidRuntime (9523): в
java.lang.reflect.Method.invoke (Method.java:521)
06-25 18: 41: 37.891:
ОШИБКА / AndroidRuntime (9523): в
com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.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 (Native
Метод)
06-25 18: 41: 37.891:
ОШИБКА / AndroidRuntime (9523): вызвано:
java.lang.NullPointerException
-------------------------------------------------- ------------ 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.callActivityOnCreate (Instrumentation.java:1047)
06-25 18: 41: 37.891:
ОШИБКА / AndroidRuntime (9523): вandroid.app.ActivityThread.performLaunchActivity (ActivityThread.java:2544)
06-25 18: 41: 37.891:
ОШИБКА / AndroidRuntime (9523): ... 11
более
06-25 18: 46: 38.252:
ОШИБКА / ActivityManager (99): не удается установить
топ приложение изменено!
Строка 183 - это первый вызов setAdapter (designations.setAdapter (adapterShapes);), когда я его закомментирую, второй setAdapter - это один код, нарушающий код
Я немного растерялся, адаптеры показывают правильное количество элементов в окне журнала при запуске с симулятора и устройства.
Я признаюсь, что являюсь нубом как для Java, так и для Android, поэтому любая помощь очень ценится.
привет
Дэвид