私は最初の Android アプリの学習と構築を遅らせてきました。私は Java を初めて使用しますが、C#、VB.NET (当時)、Objective-C (ストアに 6 つのアプリがあります)、および Fortran (昔は waaaaaaaaaaaaaaaaaaaay ;) でいくつかのプロジェクトを既に実行しています。
それで、海外からhtcの伝説(私は米国にいません)を受け取りました。これは、開発用の適切な中間レベルのデバイスを用意するために購入しました(ルート化されていないadnroid 2.1を実行しています)。
私が開発しているアプリケーションは、ターゲット レベル 4 (android 1.6) です。拡張子が .mp3 の 5 Mb の sqlite3 データベースを使用して、apk 内の圧縮を回避し、アセットからシステム フォルダーに適切にコピーします。
エミュレーターではすべて正常に動作し、デバイスでは、データベースをコピーした後のアプリのファイル サイズが、エミュレーターで表示されるものと正確に一致することがわかります。
現在、リスト ビューとスピナーを使用したメイン アクティビティで、2 つの配列アダプターを介していくつかのデータをバインドしています。デバイス上で実行すると、すべてがスムーズに実行されます。ただし、デバイスで実行しようとすると、コードのこの部分:
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 の例外を教えてください。
私は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(ネイティブ メソッド) で
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): 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);) です。コメント アウトすると、2 番目の setAdapter がコードを壊すコードになります。
ここで少し迷っています。アダプターは、シミュレーターとデバイスから実行すると、ログ ウィンドウに適切な数のアイテムを表示します。
私はJavaとAndroidの両方の初心者であることを認めているので、どんな助けも大歓迎です。
よろしく
デビッド