Передача строкового массива между приложениями Java Classes для Android - PullRequest
2 голосов
/ 06 декабря 2010

Я пишу приложение для Android, в котором мне нужно передать массив строк между двумя классами. Строка отлично инициализируется, и я могу вывести содержимое строки отлично в одном классе, но когда я пытаюсь передать его в другой класс, я получаю ошибку исключения нулевого указателя. Ниже приведена урезанная версия моего кода:

accelerometer.java:

    public class accelerometer extends Service {

 public String movement[];

 public void onCreate() {

  movement = new String[1000000];

 }

 public void updatearray() {
  movement[arraypos]=getCurrentTimeString();
  //Toast.makeText(this, movement[arraypos] , Toast.LENGTH_SHORT).show(); //this correctly displays each position in the array every time it updates so I know the array is working correctly in this file
  arraypos+=1;
 }

 public String[] getmovement(){
  return movement;
 }
    }

wakeupalarm.java:

    public class wakeupalarm extends Activity {

 private TextView herestext_;

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.wakeup);

  herestext_ = (TextView) findViewById(R.id.TextView01);

  accelerometer accelerometercall = new accelerometer();

  String movearray[] = accelerometercall.getmovement();

  herestext_.setText(movearray[2]);
  }

    }

У меня такое ощущение, что мне не хватает чего-то очень простого, но любая помощь будет принята с благодарностью!

Спасибо

Scott

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

Вы создаете новый класс акселерометра, который полностью неинициализирован, так как конструктора нет, и вы получаете доступ к его члену. Конечно, это будет нулевым.

Не уверен, как связаны ваши два класса, но если служба вызывается службой, вам нужно передать строку через намерение (например, через дополнительный).

Примечание: имена классов всегда должны начинаться с заглавной буквы. Имена методов / переменных должны иметь верблюжий регистр, то есть "updateArray". Кроме того, вы можете отформатировать ваш код здесь, выбрав его и нажав CTRL + K.

0 голосов
/ 06 декабря 2010

Ваша первая проблема, я думаю, в том, что вы создаете массив с миллионом слотов в нем. Вы действительно хотите этим заниматься? Это займет много памяти - вполне возможно, больше, чем доступно. Вместо этого вам следует обратить внимание на наличие вектора строк, который вы расширяете по мере необходимости.

...