在Android中的switch语句中没有设置数组

时间:2013-03-05 01:31:25

标签: java android

我正在尝试在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错误而关闭了一个力。无法弄清楚我做错了什么。提前谢谢。

3 个答案:

答案 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