从Android中的自定义View类访问静态对象

时间:2017-03-12 23:47:36

标签: android arrays static android-view android-inflate

我有一个视图类IntroScreen,它在我的xml布局中膨胀。 在我尝试访问静态String[]元素之前,通货膨胀很有效 在我的onCreate方法中定义。不知怎的,它给了我一个NullPointerException,即使我初始化IntroScreen对象后调用我的String[]视图也是如此。这是一些代码:

//class MainActivity which holds onCreate()
static String[] stringArray;

//inside onCreate

stringArray = new String[20];
stringArray[0] = "the world";
stringArray[1] = "is round";

//a few lines down the code... still inside onCreate()
intro = (IntroScreen)this.findViewById(R.id.hereintro);

//inside my IntroScreen which extends view
//constructors are as follows:
public IntroScreen(Context c){
    super(c);
}

public IntroScreen(Context c, AttributeSet a){
 super(c, a);
 boolean b = false;

 if(MainActivity.stringArray[0].equals("the world"))b = true; //problem here
 //above line of code gives null pointer exception
} 

//inside onDraw()
//need more calls to MainActivity.stringArray in order to create custom view
//but calls won't work at all

我的问题是如何访问这个静态String []数组?我无法通过 它是我的IntroScreen视图,因为它在代码行中通过xml进行了膨胀

intro = (IntroScreen)this.findViewById(R.id.hereintro);  

任何建议的想法,

非常感谢

2 个答案:

答案 0 :(得分:1)

在调用IntroScreen之前调用onCreate()的构造函数,因此您的数组尚未初始化。只需确保在夸大活动之前对其进行初始化。

答案 1 :(得分:0)

将该字符串数组参数传递给public IntroScreen(Context c, AttributeSet a)