Android сохраняет данные во внутреннем хранилище NullPointerException - PullRequest
2 голосов
/ 19 сентября 2011

У меня небольшая проблема с записью файла во внутреннее хранилище из моего приложения. Я получаю исключение нулевого указателя, но не могу найти способ исправить это ... и на самом деле не могу понять, какой из element is null.

Вот код, который я использую:

hash= jsonObj.getString("hash");
Log.w("CLIENT AUTH HASH","SHOW CLIENT AUTH HASH : "+hash);                  
FileOutputStream out = context.openFileOutput("autohash",context.MODE_PRIVATE);
out.write(hash.getBytes());
out.close();

Класс, в котором я пытаюсь создать и написать этот файл, не Activity, это просто некоторый вспомогательный класс, и поэтому он выдает ошибку, когда я пытаюсь установить context=this;. И на самом деле NullPointerException выдается в этой строке: FileOutputStream out = context.openFileOutput("autohash",context.MODE_PRIVATE);, и я не могу его получить, что вызывает это исключение:

  1. Контекст

или

  1. autohash - файл (существует или не существует).

Второй сценарий:

У меня та же функция сохранения файла во внутреннем хранилище, но я вызываю этот метод из другого действия. Вот ситуация:

У меня есть разные пакеты, полученные через Интернет, и я делаю что-то вроде этого:

BasePacket packet; //all other packets extends this class.
byte[] buffer=byte[1024];
//packet calculations
switch(packetType){
  case startPacket:
    packet = new startPacket(/*params*/);
    packet.startExecutePacket();
 case endPacket:
    //same procedure
}

и в startExecutePacket() я пытаюсь сохранить файл.

Так что любая помощь приветствуется! Заранее спасибо!

1 Ответ

3 голосов
/ 19 сентября 2011

CallingActivity.java

onCreate()

helperClass mHelper= new helperClass(CallingActivity.this);

helperClass.java

//declare a context
context refContext;

//constructor
public helperClass(context mContext)
{
   refContext=mContext;
}

//and you code

    hash= jsonObj.getString("hash");
    Log.w("CLIENT AUTH HASH","SHOW CLIENT AUTH HASH : "+hash);                  
    FileOutputStream out = refContext.openFileOutput("autohash",Context.MODE_PRIVATE);
    out.write(hash.getBytes());
    out.close();

попробуйте с этим

...