Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java customAdapter中的onClick侦听器和上下文出现问题_Java_Android - Fatal编程技术网

Java customAdapter中的onClick侦听器和上下文出现问题

Java customAdapter中的onClick侦听器和上下文出现问题,java,android,Java,Android,我正在尝试构建一个ArrayAdapter,允许用户访问链接到internet、googlemaps等的单个TextView字段。我无法解决错误状态下的问题 无法解析方法的startActivity(android.content.Intent) 在浏览了这里的许多帖子之后,我确定这是上下文的问题,我不确定如何从下面的代码中得到这一点。任何帮助都将不胜感激:) package com.example.stuart.listitemviewtest; 导入android.content.Conte

我正在尝试构建一个ArrayAdapter,允许用户访问链接到internet、googlemaps等的单个
TextView
字段。我无法解决错误状态下的问题

无法解析方法的startActivity(android.content.Intent)

在浏览了这里的许多帖子之后,我确定这是
上下文的问题,我不确定如何从下面的代码中得到这一点。任何帮助都将不胜感激:)

package com.example.stuart.listitemviewtest;
导入android.content.Context;
导入android.content.Intent;
导入android.net.Uri;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.TextView;
导入java.util.ArrayList;
导入java.util.List;
公共类AttractionAdapter扩展了ArrayAdapter{
公共吸引适配器(上下文、ArrayList吸引){
超级(上下文,0,景点);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
//检查现有视图是否正在重新使用,否则会膨胀视图
View listItemView=convertView;
如果(listItemView==null){
listItemView=LayoutFlater.from(getContext()).inflate(
R.layout.list_项,父项,false);
}
//获取位于列表中此位置的{@link currentAttraction}对象
最终景点currentAttraction=(景点)getItem(位置);
最终TextView attractionName=(TextView)listItemView.findViewById(R.id.attraction\u name);
attractionName.setText(currentAttraction.getmName());
attractionName.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
Log.i(“景点名称”,“景点名称:+currentAttraction.getmName());
}
});
TextView attractionURL=(TextView)listItemView.findViewById(R.id.attraction\u URL);
attractionURL.setText(currentAttraction.getmWebAddress());
attractionURL.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
//获取网址
Log.i(“网址”,“网址是:”+currentAttraction.getmWebAddress());
//在新窗口中加载URL
意图=新意图();
intent.setAction(intent.ACTION\u视图);
intent.addCategory(intent.CATEGORY可浏览);
setData(Uri.parse(currentAttraction.getmWebAddress());
星触觉(意向);
}
});
返回listItemView;
}
}

像这样更改您的构造函数:-

  Context mContext;
  public AttractionAdapter(Context context, ArrayList<Attraction> attractions) {
super(context, 0, attractions);
mContext = context;
}

您需要一个上下文来启动新活动,即活动上下文

 //load URL in new window
 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_VIEW);
 intent.addCategory(Intent.CATEGORY_BROWSABLE);
 intent.setData(Uri.parse(currentAttraction.getmWebAddress()));
 (listItemView.getContext()).startActivity(intent);

因为,getContext()将检索通过构造函数传递给super的上下文。McContext是多余的!!!谢谢你们的帮助,伙计们,我成功了!如果在片段中使用,是否需要对代码进行任何更改?
   Intent intent = new Intent();
         intent.setAction(Intent.ACTION_VIEW);
         intent.addCategory(Intent.CATEGORY_BROWSABLE);
         intent.setData(Uri.parse(currentAttraction.getmWebAddress()));
         mContext.startActivity(intent);
 //load URL in new window
 Intent intent = new Intent();
 intent.setAction(Intent.ACTION_VIEW);
 intent.addCategory(Intent.CATEGORY_BROWSABLE);
 intent.setData(Uri.parse(currentAttraction.getmWebAddress()));
 (listItemView.getContext()).startActivity(intent);