在 onChildClickListener 中使用 Intent 找不到方法
Posted
技术标签:
【中文标题】在 onChildClickListener 中使用 Intent 找不到方法【英文标题】:Use of Intent in onChildClickListener cannot find method 【发布时间】:2015-06-09 06:49:21 【问题描述】:我有一个包含子列表视图项目的列表视图,其中我提到了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)
。
下面是我的课:
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;
感谢您的帮助。
【问题讨论】:
你能在你的活动中调用这个类 MyExpandableListAdapter 时显示吗? 如果您可以查看我上面提到的链接,可能会更好地让您获得更广阔的视野,否则我也可以添加我的代码,没问题。顺便说一句,我在扩展 ActionBarActivity 的 Main Activity 中调用它。 我担心你不能在你的列表适配器中调用 startActivity() 。它是您的应用程序上下文类的方法。 我明白,但我该如何处理这种情况,我需要将此意图用于子项。你能帮我吗? 【参考方案1】:错误:找不到符号方法 startActivity(Intent)。
因为startActivity
方法不是来自BaseExpandableListAdapter
所以使用Context来访问startActivity
方法。如:
v.getContext().startActivity(intent);
【讨论】:
我可以运行该应用程序,但是当我单击“未找到处理 Intent act=android.intent.action.VIEW dat=market://details?id=editors_choice 的活动时它崩溃了” .你有什么想法吗? 我把它改成了包,错误是:没有找到处理意图的活动act=android.intent.action.VIEW dat=market://details?id=com.myapp.mapcards 是的,这对我有帮助!模拟器缺少GooglePlay的问题,需要在真机上测试才能访问包!谢谢..【参考方案2】:试试这个,
在 MyExpandableListAdapter 类中为 Context 定义一个引用,
private Context context;
为您的 MyExpandableListAdapter 类创建一个构造函数,并从您实例化它的位置传递上下文,
public MyExpandableListAdapter(Context con)
context = con;
开始你的活动,
context.startActivity(intent)
【讨论】:
以上是关于在 onChildClickListener 中使用 Intent 找不到方法的主要内容,如果未能解决你的问题,请参考以下文章
在 UITableViewCell 中使 UIView 出队