Извлечение контекста из фрагмента

Я создал класс для извлечения комментариев из JSON-кодировки из файла PHP. Этот класс распространяется от 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); } } 

Как вы можете видеть, я пытаюсь показать ProgressDialog, пока работает «doInBackground». Но progressDialog конструктор, запрашивает контекст, и я не знаю, как его обеспечить.

Я вызываю этот класс из фрагмента, поэтому я не могу получить доступ к контексту:

 pDialog = new ProgressDialog(MyFragmentA.context); 

«Основная» активность называется: AndroidViewPagerActivity, которая расширяет FragmentActivity.

(По сути, я имею в виду, что именно та, которая создает вкладки, и управляет навигацией между ними.)

Это его код:

 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)); } } 

Как я могу получить доступ к контексту? Какой контекст я должен использовать? Контекст AndroidViewPagerActivity? Итак, как я могу получить доступ к его контексту из фрагмента?

Спасибо.

Sergi

Solutions Collecting From Web of "Извлечение контекста из фрагмента"

Используйте getActivity() внутри Fragment чтобы получить Context который вы можете пройти. Это работает, поскольку Activity наследуется из Context .

В качестве альтернативы вы можете использовать getApplicationContext() для получения Context .

Хорошо, теперь я знаю что-то новое:

  • Вы должны получить контекст из класса, создавшего фрагмент.

Вы делаете это, включив это в свой код в фрагмент («ребенок»).

 Context cont; cont=getActivity(); 

Итак, как только у вас есть контекст, вы его передаете. В моем случае я должен был передать ему класс AsyncTask, поэтому я могу показать диалог.

 new RecuperarComentarisFoto(cont).execute(); 

И чтобы закончить это, в классе «RecuperarComentarisFoto» я создал конструктор. Как я читал, все в порядке.

 private Context mContext; public RecuperarComentarisFoto(Context context){ this.mContext=context; } 

И волшебство:

 @Override protected void onPreExecute() { super.onPreExecute(); ProgressDialog pDialog = new ProgressDialog(this.mContext); pDialog.setMessage("Creating Product.."); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } 

Все это заканчивается: Введите описание изображения здесь

FragmentActivity это даст вам контекст активности, а затем вы можете передать его в свою AsyncTask.