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