Adr*_*ano 12 android android-listview android-fragments android-activity
我有Fragment一个ListView.在适配器中我想创建一个对话框.
class ViewHolder {
...
@Override
public void onClick(View v) {
...
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
mContext是Context我的Fragment,我在创建适配器时保存全局.我收到了错误.
unable to add window -- token null is not for an application
该方法getActivity()不可用,所以如何得到Context我的Activity?
dan*_*c05 26
如果您有自定义适配器,请将构造函数更改为require Context作为参数.
public CustomAdapter(Context context, List<Item> items) {
}
Run Code Online (Sandbox Code Playgroud)
然后,创建一个Instance变量以通过构造函数存储上下文.
private Context mContext; //instance variable
public CustomAdapter(Context context, List<Item> items) {
//some code
this.mContext= context;
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以mContext在适配器的任何位置使用该变量.
要创建适配器,只需从活动创建时传递'this',或者getActivity()从片段创建.
mAdapter = new CustomAdapter(this, mArrayItems);
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
46321 次 |
| 最近记录: |