0

我正在尝试在 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());
  }
}

这是我的数组:

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]);
  }
}

我因 NullPointer 错误而强制关闭Log.d("TEST", words[1]);。无法弄清楚我做错了什么。提前致谢。

4

3 回答 3

4

您的words数组正在初始化,但仅在mine对象中,而不是在shuffle方法自己的this对象中。尚不清楚为什么要在方法中创建单独的MyArray对象shuffle,调用 choose方法,然后尝试访问自己的words数组。

编辑以匹配问题编辑以更改myArrayMyArray.

于 2013-03-05T01:36:32.697 回答
1

shuffle()将您的方法更改为:

public void shuffle() {
    choose(2);
    Log.d("TEST", words[0]);
    Log.d("TEST", words[1]);
}

这将处理空指针,因为您没有创建mine不需要的 local 。

它还将解决您接下来会遇到的越界问题,因为您正在尝试访问2不存在的数组成员。

它还消除了Context你正在传递的信息,显然是无缘无故的。

于 2013-03-05T01:39:39.670 回答
0

你知道 onCreate MyArray 有一个大写的“m”,类的名称“m”是小写的,在日志中它说位置 2 只有 0 和 1

于 2013-03-05T01:36:15.697 回答