1

3つのクラスがあります。メインクラス、globalVariableクラス、およびitemクラス。

メインクラスにArrayListを設定しようとしています。そして、アイテムクラスで読みたいです。
これは私が試したものです:

主要:

for (int i = data.size()-1; i >= 0; i--){
    if (str_tv.contains(data.get(i).getCaption())){
        //TODO data.remove();
        String str_i = String.valueOf(i);
        checkedArray.add(str_i);

    }
}
System.out.println("MainActivity");
global.setArrList(checkedArray);
System.out.println("size = "+global.getArrList().size());

global.setArrlListここで動作します。ここでもglobal.getArrList動作します(サイズを取得します)。

今、私はアイテムクラスからそれを取得しようとします:

System.out.println("Item Class");
System.out.println("size = "+global.getArrList().size());   <--gives NullPointer

しかし、ここでは機能しておらず、NullPointerを提供します。

これは私のグローバルクラスです:

ArrayList<String> arrList;

public ArrayList<String> getArrList() {
    return arrList;
}

public void setArrList(ArrayList<String> arrList) {
    this.arrList = arrList;
}

ArrayList私は彼がそれを設定する代わりに最初のものを手に入れようとしたのかどうかをチェックしました。しかし、彼はSystem.out.println("MainActivity");アイテムクラスの前のものを示しています。

なぜそれはNullPointerを与えるのですか?私は何が欠けていますか?

Logcat:

01-24 11:02:04.755: E/AndroidRuntime(30097): FATAL EXCEPTION: main
01-24 11:02:04.755: E/AndroidRuntime(30097): java.lang.NullPointerException
01-24 11:02:04.755: E/AndroidRuntime(30097):    at com.dlv.GewasBescherming3.ItemListAdapter.getView(ItemListAdapter.java:47)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.AbsListView.obtainView(AbsListView.java:2035)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.ListView.makeAndAddView(ListView.java:1772)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.ListView.fillDown(ListView.java:672)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.ListView.fillFromTop(ListView.java:732)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.ListView.layoutChildren(ListView.java:1625)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.AbsListView.onLayout(AbsListView.java:1865)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.View.layout(View.java:11278)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.View.layout(View.java:11278)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.View.layout(View.java:11278)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.View.layout(View.java:11278)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.View.layout(View.java:11278)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.os.Handler.dispatchMessage(Handler.java:99)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.os.Looper.loop(Looper.java:137)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at android.app.ActivityThread.main(ActivityThread.java:4575)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at java.lang.reflect.Method.invokeNative(Native Method)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at java.lang.reflect.Method.invoke(Method.java:511)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
01-24 11:02:04.755: E/AndroidRuntime(30097):    at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

5

実際、

ArrayList<String> arrList;ですnull

次のように宣言するだけですArrayList<String> arrList = new ArrayList<String>();

アップデート:

実際には、MainItemクラスの両方が異なるグローバルオブジェクトを持っているため、同じを参照することはできませんarrList

追加したほうがいいでしょう:

public static ArrayList<String> arrList = new ArrayList<String>();

Global class、次のように使用します。

Global.arrList.size();
于 2013-01-24T10:12:39.317 に答える