我正在尝试在Android中的另一个活动中设置一个类。
这是我的主要活动:
public class main_activity extends Activity {
int i = 0;
TextView title;
TextView inst;
TextView word;
EditText edittext;
Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_four);
MyArray mine = new MyArray();
mine.shuffle(getApplicationContext());
}
}
这是myArray:
public class MyArray{
String[] words = new String[2];
public void choose(int id) {
switch (id) {
case 1:
words[0] = "zero";
words[1] = "one";
break;
case 2:
words[0] = "two";
words[1] = "three";
}
public void shuffle(Context mcontext) {
MyArray mine = new MyArray();
mine.choose(2);
Log.d("TEST", words[1]);
Log.d("TEST", words[2]);
}
}
我在Log.d("TEST", words[1]);
上因NullPointer错误而关闭了一个力。无法弄清楚我做错了什么。提前谢谢。
答案 0 :(得分:4)
您的words
数组已初始化,但仅限于mine
对象,而不是shuffle
方法自己的this
对象。目前还不清楚为什么要在MyArray
方法中创建单独的shuffle
对象,调用其 choose
方法,然后尝试访问自己的words
阵列。
编辑以匹配问题编辑,将myArray
更改为MyArray
。
答案 1 :(得分:1)
将shuffle()
方法更改为:
public void shuffle() {
choose(2);
Log.d("TEST", words[0]);
Log.d("TEST", words[1]);
}
这将处理空指针,因为您没有创建您不需要的本地mine
。
它还将修复您接下来会遇到的界限,因为您正在尝试访问不存在的数组成员2
。
它也消除了你传递的Context
,显然无缘无故。
答案 2 :(得分:0)
你知道onCreate MyArray有一个大写'm',而'm'是小写的类的名字,在日志中它表示位置2只有0和1