(Actuellement 52) programmation à partir de 51 ans Remarque FileOutputStream android.content.Context.openFileOutput (java.lang.String, int) 'sur une référence d'objet nulle

Supposons que vous ayez ce code

SampleActivity


Context context;
@Override 
protected void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   setContantView(R.layout.sample);
   context = getApplicationContext();

   new AsyncTask().execute();
}


public void fileWrite(){
   try{
       openFileOutput("fileName",Context.MODE_APPEND);
   }
}

AsyncTask


@Override 
protected void onPostExecute(String s){
   super.onPostExecute(s);

   SampleActivity sampleA = new SampleActivity();
   sampleA.fileWrite();
}

Avec ça FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)' on a null object reference J'obtiens une erreur.

Puisque context n'est pas généré lorsque l'instance est créée dans le code, il devient NullPointerExeption.

Si vous voulez l'éviter> https://qiita.com/old_cat/items/ff4f2116192fd536fb59 Comme décrit dans, implémentez la méthode de rappel et gérez le contexte.

SampleActivity


Context context;
@Override 
protected void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   setContantView(R.layout.sample);
   context = getApplicationContext();

   AsyncTaskCallBack asyncTaskCallBack = new AsyncTaskCallBack();
   AsyncTask asyncTask = new AsyncTask(asyncTaskCallBack);
}

public class AsyncTaskCallBack(){
   //Vous pouvez également utiliser fileOutputStream ici
   //Mais essayez d'appeler une autre méthode
   public void one(){
      fileWriter();
   }
}

public void fileWrite(){
   try{
       openFileOutput("fileName",Context.MODE_APPEND);
   }
}

AsyncTask


SampleActivity.AsyncTaskCallBack asyncTaskCallBack;

public AsyncTask(SampleActivity.AsyncTaskCallBack asyncTaskCallBack){
   this.asyncTaskCallBack = asyncTaskCallBack;
}

@Override 
protected void onPostExecute(String s){
   super.onPostExecute(s);
   asyncTaskCallBack.one();
}

Recommended Posts

(Actuellement 52) programmation à partir de 51 ans Remarque FileOutputStream android.content.Context.openFileOutput (java.lang.String, int) 'sur une référence d'objet nulle
Programmation à partir de 51 ans Remarque - référence
Programmation à partir de 51 ans Note Service - référence
Programmation à partir de 51 ans (actuellement 52) Note Path and File
Programmation à partir de 51 ans Remarque AsyncTask --reference [Shakyo]
Programmation à partir de Memorandum of Thread de 51 ans
(Actuellement 52) programmation à partir de 51 ans Note 3 lignes Déplacer le focus sur le bouton Android
Planification à partir de 51 ans (actuellement 52) Mémorandum VScode javadoc
Programmation à partir de 51 ans (actuellement 52) Remarque: Ajouter un fichier jar avec VScode Class.forName java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Drive
Processus de mémorandum de programmation thread de 51 ans Handler -reference
Programmation à partir de 51 ans Remarque: Confirmation de la connexion réseau Android
Programmation à partir de 51 ans Remarque: Restrictions d'exécution en arrière-plan OverView [Shakyo]
Programmation à partir de 51 ans mémorandum android Timer
Programmation à partir de 51 ans [Shakyo] Intent IntentFilter-reference
Programmation à partir de 51 ans mémo Android Activity Manager mémo
Programmation à partir de 51 ans Remarque: ne démarrez pas Android Sevice plus d'une fois Confirmation du démarrage du service