Intereting Posts
Распространение библиотек с открытым исходным кодом в приложениях Android Разница между startActivityForResult () и startActivity ()? Отключить замену unicode emoji в Android Chrome? NumberFormatException: неверная ревизия: 24.0.0-alpha1: неверная ревизия: 24.0.0-alpha1 Как я могу проверить, что URI изображения действителен в Android? Android Espresso: как я могу протестировать определенный фрагмент при выполнении одного действия для нескольких фрагментарных архитектур OkHttp javax.net.ssl.SSLPeerUnverifiedException: имя хоста domain.com не проверено Приложение не доступно для Nexus 7 в Google Play Android SDK Manager не загружает последнюю платформу Android SDK (API 17) Почему андроид получает неправильный сертификат ssl? (Два домена, один сервер) Рекомендации для .NET Web Service Format / Protocol для интеграции с Android, iPhone и т. Д. Папка Gen пуста для Android-проекта Найти представление с заданными координатами x / y в android Проблема переноса содержимого индикатора Android TabPage Добавление динамического текста через Android SeekBar thumb

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

Я создал класс для извлечения комментариев из 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.