-2

「item」という名前のクラスを作成しました。これがそれです:(コード全体)

public class item {
private int id;
private String title;
private String desc;
private double lat;
private double lon;
private String pub;
private int p;
private int n;

public item(int id, String title, String desc, double lat, double lon, String pub, int p, int n) {
    super();
    this.id = id;
    this.title = title;
    this.desc = desc;
    this.lat = lat;
    this.lon = lon;
    this.pub = pub;
    this.p = p;
    this.n = n;
}

List<item>次に、それに「アイテム」を作成する必要がありadd()ますが、何らかの理由でアプリケーションがクラッシュします。

それがアクティビティです:

public class MainActivity extends Activity {

    List<item> markers;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        item a = new item(1, "lol", "sdfs", 32.45345, 34.54353, "nir", 0, 0);
        markers.add(a);


    }

ログキャット:

08-10 16:32:46.710: D/AndroidRuntime(2934): Shutting down VM
08-10 16:32:46.710: W/dalvikvm(2934): threadid=1: thread exiting with uncaught exception (group=0x41a0a930)
08-10 16:32:46.777: E/AndroidRuntime(2934): FATAL EXCEPTION: main
08-10 16:32:46.777: E/AndroidRuntime(2934): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.testitems/com.example.testitems.MainActivity}: java.lang.NullPointerException
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread.access$600(ActivityThread.java:153)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1247)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.os.Handler.dispatchMessage(Handler.java:99)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.os.Looper.loop(Looper.java:137)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread.main(ActivityThread.java:5227)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at java.lang.reflect.Method.invokeNative(Native Method)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at java.lang.reflect.Method.invoke(Method.java:511)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at dalvik.system.NativeStart.main(Native Method)
08-10 16:32:46.777: E/AndroidRuntime(2934): Caused by: java.lang.NullPointerException
08-10 16:32:46.777: E/AndroidRuntime(2934):     at com.example.testitems.MainActivity.onCreate(MainActivity.java:18)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.Activity.performCreate(Activity.java:5104)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-10 16:32:46.777: E/AndroidRuntime(2934):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2262)
08-10 16:32:46.777: E/AndroidRuntime(2934):     ... 11 more

あなたの助けに感謝します!

4

5 に答える 5

4

マーカー リストを初期化する

List<item> markers=new ArrayList<item>();
于 2013-08-10T13:33:00.473 に答える
1

これを試して

public class MainActivity extends Activity {

ArrayList<item> markers;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

     markers = new ArrayList<item>();

    item a = new item(1, "lol", "sdfs", 32.45345, 34.54353, "nir", 0, 0);
    markers.add(a);


}
于 2013-08-10T13:36:39.397 に答える
0

リストを使用する前に、リストを初期化する必要があります。

    setContentView(R.layout.activity_main);

    List<item> markers = new ArrayList<item>();
    item a = new item(1, "lol", "sdfs", 32.45345, 34.54353, "nir", 0, 0);
    markers.add(a);
于 2013-08-10T13:33:47.750 に答える
0

これらのエラーを削除するために arraylist オブジェクトを初期化していないコードでは、以下の手順を参照してください。

  1. まず、このように Arraylist オブジェクトにメモリを割り当てます

    public class MainActivity extends Activity {

    ArrayList マーカー;

    @Override protected void onCreate(Bundle savedInstanceState) {

           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
    
           markers = new ArrayList<item>();
    
           item a = new item(1, "lol", "sdfs", 32.45345, 34.54353, "nir", 0, 0);
           markers.add(a);
    

}

  1. 次に、エラーを処理するには、try および catch ブロックを使用します。

public class MainActivity extends Activity {

ArrayList マーカー;

@Override protected void onCreate(Bundle savedInstanceState) { 試行 {

           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);

           markers = new ArrayList<item>();

           item a = new item(1, "lol", "sdfs", 32.45345, 34.54353, "nir", 0, 0);
           markers.add(a);

    }
    catch(Exception e) 
    {
         //Write to android ddms logger.
            or
          make a Toast Message
    }

}

  1. arraylist などのように初期化されたリソースを解放します。catch ブロックの後に finally ブロックを配置します。
于 2013-08-11T11:23:31.187 に答える
0

メソッドを使用する前にオブジェクトを初期化する必要がありますが、リストにデータを追加する前にこの手順を忘れたようです。markersデータを追加する前に初期化します。

 List<item> markers=new ArrayList<item>();
于 2013-08-10T14:21:34.563 に答える