3

我已经实现了一个 4 睫毛的 FragmentPagerAdapter,并且在每个睫毛中我加载了一个具有不同视图的片段。在其中一个中,按下图像执行 AsyncTask 以从服务器获取一系列数据,并通过 onPostExecute() 方法上的意图加载新类。

我在一项活动中拥有此功能并且运行良好。现在要从片段​​进行调用,我必须使用此类的静态模式进行调用,并且在代码“startActivity(i)”行中出现错误:

  //AsyncTask 
private static class CargarJSON extends AsyncTask<String, Void, String> {
    Context mContext;
    public CargarJSON(Context context) {
        mContext = context;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
        mProgressItem.setVisible(true);
        mProgressItem.setActionView(R.layout.actionbar_indeterminate_progress);
        mProgressItem.expandActionView();
    }

    @Override
    protected String doInBackground(String... params) {                 
        String url = params[0];              
        String data = MetodosJSON.getHttpResponse(url);
        MetodosJSON.parseaJSON2(data, IniSelCategoria.ac);  
        return params[1];                   
    }

    @Override
    protected void onPostExecute(String titulo) {   
        super.onPostExecute(titulo);
        // start new activity           
        Intent i = new Intent(mContext, PantallaInfo.class);
        i.putExtra("title", titulo);
        i.putExtra("URLser", urlSer);
        **startActivity(i);**
        mProgressItem.setVisible(false);
    }

}

错误是:

Cannot make a static reference to the non-static method startActivity(Intent) from the type Activity

如何使方法调用'startActivity(i)'?

非常感谢。

4

2 回答 2

6

将其更改为

mContext.startActivity(i);

如果context不是从Activity. 幸运的是,您已经将 a 传递Context给构造函数。

于 2013-10-01T17:17:40.707 回答
2

使用以下代码更改您的代码。

        Intent i = new Intent(mContext, PantallaInfo.class);
        i.putExtra("title", titulo);
        i.putExtra("URLser", urlSer);
        mContext.startActivity(i); // call using Context instance
于 2013-10-01T17:19:28.423 回答