0

プログラムでオブジェクトを動的に作成し、array.xml からそれらを設定しています。array.xml には一連のツールと値があり、これらを各アイテムのクラス値にロードする必要があります。

これが私がクラスに持っているものです。

public class ToolImporter extends Application{

public static Tool[] tools;
private String[] aTool;
private int i;

public ToolImporter() {

    aTool = getResources().getStringArray(R.array.tools); //null pointer?

    // TODO Auto-generated constructor stub
}

これは私のarray.xmlです。

    <array name="tools">
        <item name="SAW">
            <id>1</id>
            <image>R.drawable.image_saw100x60px</image>
            <boxX>100</boxX>
            <boxY>100</boxY>
            <worktopX>200</worktopX>
            <worktopY>200</worktopY>
        </item>
        <item name="SCREWDRIVER">
            <id>2</id>
            <image>R.drawable.image_screwdriver100x60px</image>
            <boxX>150</boxX>
            <boxY>100</boxY>
            <worktopX>250</worktopX>
            <worktopY>200</worktopY>
        </item>
        <item name="HAMMER">
            <id>3</id>
            <image>R.drawable.image_hammer100x60px</image>
            <boxX>200</boxX>
            <boxY>100</boxY>
            <worktopX>300</worktopX>
            <worktopY>200</worktopY>
        </item>
    </array>

ただし、「//null pointer?」に null ポインターをスローします。ライン。それをインポートするために私が間違っていることについて誰かがアドバイスを提供できますか?

4

3 に答える 3

1

Applicationクラスでフィールド変数を作成してから、メインアクティビティクラス内のonCreateメソッド内で初期化します。

于 2012-12-17T18:27:52.207 に答える
1

この投稿によると:

onCreate() コールバックがトリガーされていない限り、getResources() を呼び出さないでください。

public class StackStackActivity extends Activity 
{

    String[] myArray = getResources().getStringArray(R.array.glenns); // This returns null

    public StackStackActivity()
    {

        myArray = getResources().getStringArray(R.array.glenns); // This returns null also
    }

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myArray = getResources().getStringArray(R.array.glenns); // Returns an array from resources
    }
}
于 2012-12-17T18:22:58.620 に答える
0

ToolImporter クラスに「Context」フィールドを作成します。ToolImporter コンストラクターで、アクティビティから ToolImporter クラスにコンテキストを渡します。

コンテキスト フィールドを使用して getResources() にアクセスする

aTool = context.getResources().getStringArray(R.array.tools); 
于 2012-12-17T18:37:25.740 に答える