2012-12-17 51 views
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> 

但是,它会在“//空指针?”上抛出一个空指针。线。 任何人都可以提供意见我做错了导入它?

回答

1

根据这一post

你不应该叫getResources(),除非的onCreate()回调被触发。

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 
    } 
} 
+0

看问题,他正试图访问,而不是活动的应用类中资源 –

+0

我的声明仍然有效。 – Woot4Moo

+0

我将尝试在活动中导入数组并将其传递给导入器类 – Intern87

1

在您的Application类中创建字段变量,然后在您的主要活动类的onCreate方法内初始化它们。

+0

这工作,并在我的评论@ Woot4Moo的帖子 – Intern87

0

在ToolImporter类中创建一个'Context'字段。将活动的上下文传递给ToolImporter构造函数中的ToolImporter类。

使用上下文字段访问getResources()

aTool = context.getResources().getStringArray(R.array.tools);