从片段中检索上下文

我创建了一个类来从PHP文件中的JSON编码中检索注释。此类从 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);
    }

}

如您所见,我正在尝试在“doInBackground”进程工作时显示ProgressDialog。但是 progressDialog 构造函数要求一个 Context,我不知道如何提供它。

我从 Fragment 调用这个类,所以我无法访问这样的上下文:

pDialog = new ProgressDialog(MyFragmentA.context);

“主要”活动被称为:AndroidViewPagerActivity,它扩展了FragmentActivity。

(通过main,我的意思是它是创建选项卡并管理它们之间的导航的那个。

这是它的代码:

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” context?那么,如何从片段访问其上下文呢?

谢谢。

塞尔吉


答案 1

在 里面使用,以获得一个你可以传递的。这有效,因为继承自 。getActivity()FragmentContextActivityContext

作为替代方法,您可以使用 来获取 .getApplicationContext()Context


答案 2

@heiko-rupp的答案已经过时了,已经在API 23的Fracments中引入了。Fragment.getContext()

要从您必须使用的片段中传递它,例如this.getContext()

https://developer.android.com/reference/android/app/Fragment.html#getContext()根据文档只是

返回此片段当前关联的上下文。


推荐