Issue
Ok so now I have Class A
that contains some spinners that values will be populated by Class B
that extends AsnycTask
which grabs the spinner values from a web service. In class B i manage to retrieve the values, showing in a Toast. The problem now is how do I pass those spinner values back to Class A?
I've tried
Can OnPostExcecute method in AsyncTask RETURN values?
by passing Class A
to Class B
and store the value in a public variable of Class A
like below
@Override
protected void onPostExecute(String result)
{
classA.classAvariable = result;
}
However whenever I try to read the classAvariable
i always get a NullPointer Exception
.
Seems like the variable was never assigned with the result.
For readability purpose I needed to seperate Class B
instead of using as an inline class.
Any ideas my fellow Java programmers?
Solution
I guess you are trying to read class A variable before it is being set.. Try to do it using callbacks..in the callback function pass the values and refresh your spinners..
You can create interface
, pass it to AsyncTask
(in constructor), and then call method in onPostExecute
For example:
Your interface:
public interface OnTaskCompleted{
void onTaskCompleted(values);
}
Your Activity:
public YourActivity implements OnTaskCompleted{
//your Activity
YourTask task = new YourTask(this); // here is the initalization code for your asyncTask
}
And your AsyncTask:
public YourTask extends AsyncTask<Object,Object,Object>{ //change Object to required type
private OnTaskCompleted listener;
public YourTask(OnTaskCompleted listener){
this.listener=listener;
}
//required methods
protected void onPostExecute(Object o){
//your stuff
listener.onTaskCompleted(values);
}
}
Answered By - Nermeen
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.