runOnUiThread in fragment

Try this: getActivity().runOnUiThread(new Runnable...

It’s because:

1) the implicit this in your call to runOnUiThread is referring to AsyncTask, not your fragment.

2) Fragment doesn’t have runOnUiThread.

However, Activity does.

Note that Activity just executes the Runnable if you’re already on the main thread, otherwise it uses a Handler. You can implement a Handler in your fragment if you don’t want to worry about the context of this, it’s actually very easy:

// A class instance
private Handler mHandler = new Handler(Looper.getMainLooper());

// anywhere else in your code<your runnable>);
// ^ this will always be run on the next run loop on the main thread.

EDIT: @rciovati is right, you are in onPostExecute, that’s already on the main thread.

Leave a Comment