Angenommen, Sie haben diesen 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();
}
Mit diesem
FileOutputStream android.content.Context.openFileOutput(java.lang.String, int)' on a null object reference
Ich bekomme eine Fehlermeldung.
Da "Kontext" nicht generiert wird, wenn die Instanz im Code erstellt wird, wird sie zu "NullPointerExeption".
Wenn Sie dies vermeiden möchten> https://qiita.com/old_cat/items/ff4f2116192fd536fb59 Implementieren Sie wie in beschrieben die Rückrufmethode und behandeln Sie den Kontext.
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(){
//Sie können hier auch fileOutputStream verwenden
//Versuchen Sie jedoch, eine andere Methode aufzurufen
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();
}