在 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 出队

Java:在 GridLayout 中使组件居中

如何在 TypeScript 中使装饰器类型安全?

如何在 Flutter 的 tabbarwiew 中使 webview 可滚动

在 UITextView 中使图像可点击

如何在发布版本中使标签不可见[关闭]