我一直在放慢学习和构建我的第一个 Android 应用程序的速度。我对 Java 非常陌生,但已经在 C#、VB.NET(过去)、Objective-C(商店中有 6 个应用程序)和 Fortran(过去 waaaaaaaaaaaaaaaaaaaay ;)
所以我刚从海外收到一个 htc legend(我不在美国),我买它是为了有一个体面的中级设备进行开发(它运行的是非 root 的 adnroid 2.1)
我一直在开发的应用程序是目标级别 4(android 1.6)。它使用带有 .mp3 扩展名的 5 Mb sqlite3 数据库,以避免在 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);
给我一个空指针异常。
我在mac下使用eclipse,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.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 Method)
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(本机方法)
06-25 18:41:37.891: 错误/AndroidRuntime(9523): 由: java.lang.NullPointerException 引起
-------------------------------------------------- ------------ 06-25 18:41:37.891: 错误/AndroidRuntime(9523): at 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 的菜鸟,所以非常感谢任何帮助。
问候
大卫