我正在尝试构建一个ArrayAdapter,允许用户访问链接到互联网,googlemaps等的各个TextView
字段。我无法解决错误状态的问题
无法解析方法'startActivity(android.content.Intent)。
在这里查看了很多帖子之后,我已经确定这是context
的问题,我不知道如何从下面的代码中得到这个。任何帮助将不胜感激:)
package com.example.stuart.listitemviewtest;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class AttractionAdapter extends ArrayAdapter {
public AttractionAdapter(Context context, ArrayList<Attraction> attractions) {
super(context, 0, attractions);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Check if the existing view is being reused, otherwise inflate the view
View listItemView = convertView;
if(listItemView == null) {
listItemView = LayoutInflater.from(getContext()).inflate(
R.layout.list_item, parent, false);
}
// Get the {@link currentAttraction} object located at this position in the list
final Attraction currentAttraction = (Attraction) getItem(position);
final TextView attractionName = (TextView) listItemView.findViewById(R.id.attraction_name);
attractionName.setText(currentAttraction.getmName());
attractionName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.i("attraction Name", "the name of attraction: " + currentAttraction.getmName());
}
});
TextView attractionURL =(TextView) listItemView.findViewById(R.id.attraction_URL);
attractionURL.setText(currentAttraction.getmWebAddress());
attractionURL.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//get web address
Log.i("Web Address", "The web address is: " + currentAttraction.getmWebAddress());
//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()));
startActivity(intent);
}
});
return listItemView;
}
}
答案 0 :(得分:1)
像这样更改构造函数: -
Context mContext;
public AttractionAdapter(Context context, ArrayList<Attraction> attractions) {
super(context, 0, attractions);
mContext = context;
}
现在在startActivity();
之前使用mContext Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(currentAttraction.getmWebAddress()));
mContext.startActivity(intent);
答案 1 :(得分:0)
您需要一个上下文来启动一个新活动,即活动上下文
//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);