在 onChildClickListener 中使用 Intent 找不到方法
Use of Intent in onChildClickListener cannot find method
我有一个带有 sublistView 项目的 listView,其中我提到了 Using lists in Android(15.2.ExpandableListView 示例)。
我可以通过 Toast 获得每个列表项的点击并显示。
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, children,
Toast.LENGTH_SHORT).show();
}
但是当我想在 childClick 中使用 Intent 时,我收到一个错误:cannot find symbol method startActivity(Intent)
。
下面是我的class:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
//Some sort of class code in here...
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String children = (String) getChild(groupPosition, childPosition);
TextView text = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.listrow_details, null);
}
text = (TextView) convertView.findViewById(R.id.textView1);
text.setText(children);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//11 group position exist, each has 5 child
switch ((groupPosition)){
case 0:
if (childPosition == 0) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=editors_choice"));
startActivity(intent); //cannot find symbol method startActivity(Intent)
} else if (childPosition == 1) {
Toast.makeText(activity, "2",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 2) {
Toast.makeText(activity, "3",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 3) {
Toast.makeText(activity, "4",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 4) {
Toast.makeText(activity, "5",
Toast.LENGTH_SHORT).show();
}
break;
case 1:
...
}
});
return convertView;
}
}
感谢您的帮助。
error: cannot find symbol method startActivity(Intent).
因为startActivity
方法不是来自BaseExpandableListAdapter
所以使用上下文来访问startActivity
方法。如:
v.getContext().startActivity(intent);
试试这个,
在您的 MyExpandableListAdapter 中为上下文定义一个引用 class,
private Context context;
为您的 MyExpandableListAdapter 创建一个构造函数 class 并从实例化它的地方传递上下文,
public MyExpandableListAdapter(Context con) {
context = con;
}
开始你的activity,
context.startActivity(intent)
我有一个带有 sublistView 项目的 listView,其中我提到了 Using lists in Android(15.2.ExpandableListView 示例)。
我可以通过 Toast 获得每个列表项的点击并显示。
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity, children,
Toast.LENGTH_SHORT).show();
}
但是当我想在 childClick 中使用 Intent 时,我收到一个错误:cannot find symbol method startActivity(Intent)
。
下面是我的class:
public class MyExpandableListAdapter extends BaseExpandableListAdapter {
//Some sort of class code in here...
@Override
public View getChildView(int groupPosition, final int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
final String children = (String) getChild(groupPosition, childPosition);
TextView text = null;
if (convertView == null) {
convertView = inflater.inflate(R.layout.listrow_details, null);
}
text = (TextView) convertView.findViewById(R.id.textView1);
text.setText(children);
convertView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//11 group position exist, each has 5 child
switch ((groupPosition)){
case 0:
if (childPosition == 0) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=editors_choice"));
startActivity(intent); //cannot find symbol method startActivity(Intent)
} else if (childPosition == 1) {
Toast.makeText(activity, "2",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 2) {
Toast.makeText(activity, "3",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 3) {
Toast.makeText(activity, "4",
Toast.LENGTH_SHORT).show();
} else if (childPosition == 4) {
Toast.makeText(activity, "5",
Toast.LENGTH_SHORT).show();
}
break;
case 1:
...
}
});
return convertView;
}
}
感谢您的帮助。
error: cannot find symbol method startActivity(Intent).
因为startActivity
方法不是来自BaseExpandableListAdapter
所以使用上下文来访问startActivity
方法。如:
v.getContext().startActivity(intent);
试试这个,
在您的 MyExpandableListAdapter 中为上下文定义一个引用 class,
private Context context;
为您的 MyExpandableListAdapter 创建一个构造函数 class 并从实例化它的地方传递上下文,
public MyExpandableListAdapter(Context con) {
context = con;
}
开始你的activity,
context.startActivity(intent)