将 asynctask 值传递给 mainactivity 时出现上下文错误

context error while passing asynctask value to mainactivity

在我的主 activity 中,如果我应用此代码,我会收到错误 gridviewadapter() cannot be applied, 这是上下文中的问题。

  GridViewAdapter adapter = new GridViewAdapter(this, R.layout.grid_item_layout, result);

如果我这样应用它:

public MainActivity (Context context) {
        mContext = context;

    }
      GridViewAdapter adapter = new GridViewAdapter(mContext, R.layout.grid_item_layout, result);

我在 logcat

中遇到了这个错误
java.lang.InstantiationException: can't instantiate class com.justedhak.www.i.MainActivity; no empty constructor

我正在尝试将 asynctask arraylist 值传递给 mainactivity ..如何解决这个问题?

删除这个构造函数

public MainActivity (Context context) {
    mContext = context;
}

将此添加到 MainActivity

onCreate()
mContext = this;

GridViewAdapter 适配器 = new GridViewAdapter(this, R.layout.grid_item_layout, Listitem);

不应为 MainActivity class 使用构造函数。 请使用:

GridViewAdapter adapter = new GridViewAdapter(getApplicationContext(), R.layout.grid_item_layout, result);

而不是:

GridViewAdapter adapter = new GridViewAdapter(this, R.layout.grid_item_layout, result);

尝试

GridViewAdapter adapter = new GridViewAdapter(MainActivity.this, R.layout.grid_item_layout, result);

如果要传递mContext变量,像下面这样初始化这个变量:

public class MainActivity extends AppCompatActivity {
     private final Context mContext = this;

     ... // other codes such as onCreate...
}

希望对您有所帮助!