Methode 1:
As AsyncTaskActivity is in
separate file than LoginActivity, you cant finish LoginActivity by:
Login.this.finish();
Instead you should pass the Activity Reference
as parameter in the AsyncTaskActivity Class, like you can define following
constructor:
private class AsyncTaskActivity
extends AsyncTask<String, Void, String> {
Activity mActivity;
public AsyncTaskActivity(Activity activity) {
super();
this.mActivity=activity;
}
}
and whenever you want to finish
the activity call
this.mActivity.finish();
Create AsyncTaskActivity's Object
in LoginActivity by
AsyncTaskActivity asynTask = new
AsyncTaskActivity(LoginActivity.this);
Methode 2:
What
you can try to do instead of calling context.finish(), why don't you do a
callback interface like this:
public interface TaskCallback{
void done();
}
Then you implement this into your
Activity
public Hello extends Activity
implements TaskCallback{
.....BUNCH OF ACTIVITY CODE.....
public void onCreate(Bundle
savedInstanceState) {
MyTask mt = new MyTask(this);
mt.execute();
}
public void done() {
finish();
}
}
And instead of having Context as
a parameter you have TaskCallback
public class MyTask extends
AsyncTask<Void, Void, Void> {
private TaskCallback mCallback;
public MyTask(TaskCallback
callback) {
mCallback = callback;
}
//doinbackground, etc
protected void onPostExecute() {
mCallback.done();
}
There you go, it gives you more
flexibility to custom each implementation.
No comments:
Post a Comment