I created a class to retrieve comments from a JSON encoding from a PHP file. This class, extends from AsyncTask:
public class RecuperarComentarisFoto extends AsyncTask<String, String, String>{
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(????);
pDialog.setMessage("Creating Product..");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
}
}
As you can see, I'm trying to show a ProgressDialog while the "doInBackground" proccess is working. But progressDialog constructor, asks for a Context, and I don't know how to provide it.
I'm calling this class from a Fragment, so I can't access the context like this:
pDialog = new ProgressDialog(MyFragmentA.context);
The "main" acitivity is called: AndroidViewPagerActivity which extends FragmentActivity.
(By main, I mean that it's the one that is creating the tabs, and managing the navigation between them.)
This is it's code:
public class AndroidViewPagerActivity extends FragmentActivity {
ViewPager mViewPager;
TabsAdapter mTabsAdapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mViewPager = new ViewPager(this);
mViewPager.setId(R.id.pager);
setContentView(mViewPager);
final ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_HOME);
bar.hide();
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText("Fragment A"), MyFragmentA.class, null);
if (savedInstanceState != null) {
bar.setSelectedNavigationItem(savedInstanceState.getInt("tab", 0));
}
}
How can I access the context? Which context should I use? "AndroidViewPagerActivity" context? So how can I access its context from a fragment?
Thank you.
Sergi
FragmentActivity this will give you context of activity and then you can pass it to your AsyncTask.
@heiko-rupp's answer is outdated,
Fragment.getContext()
has been introduced in Fragments in API 23.To pass it around from fragment you have to use, like
this.getContext()
https://developer.android.com/reference/android/app/Fragment.html#getContext() which according to documentations just
Okay, now I know something new:
You do this by including this in your code in the fragment ("the child").
So then, once you've the context, you pass it. In my case, I had to pass it a AsyncTask class, so I can show a dialog.
And to finish this, on the "RecuperarComentarisFoto" class, I created a constructor. As I've read, it's ok to do it this way.
And the magic:
This all ends with:![enter image description here](https://i.stack.imgur.com/6SuYD.png)
Use
getActivity()
inside theFragment
to obtain aContext
that you can pass along. That works, asActivity
inherits fromContext
.As alternative you can use
getApplicationContext()
to obtain theContext
.