如何从片段适配器启动活动

Posted

技术标签:

【中文标题】如何从片段适配器启动活动【英文标题】:How to StartAcitivity from a fragment adapter 【发布时间】:2012-08-02 16:46:48 【问题描述】:

我有一个带有自定义适配器的列表片段。这个适配器有一个图像的 onClick 事件,我想在其中启动一个新的意图(活动)。我无法做到这一点。

谁能帮我写代码。

viewholder.gMaps = (ImageView) convertView.findViewById(R.id.imgMaps);
viewholder.gMaps.setClickable(true);
viewholder.gMaps.setOnClickListener(new OnClickListener() 
    @Override
    public void onClick(View v) 
        Log.v(LOG_TAG, "Not sure how do I start an Activity");
        /*
        Intent intent = new Intent().setClass(((ListViewFragment) context), GMaps.class);
        intent.putExtra("Longitude", mList.get(holder.position).get("Longitude").toString());
        intent.putExtra("Latitude", mList.get(holder.position).get("Latitude").toString());
        startActivity(intent);
        */
    
);

【问题讨论】:

【参考方案1】:

为仍在寻找答案的人参考下面的代码

holder.gMaps.setOnClickListener(new OnClickListener() 
            @Override
            public void onClick(View v) 

                Intent intent = new Intent().setClass(v.getContext(), GMaps.class);
                intent.putExtra("Longitude", mList.get(holder.position).get("Longitude").toString());
                intent.putExtra("Latitude", mList.get(holder.position).get("Latitude").toString());
                v.getContext().startActivity(intent);

            
        );

【讨论】:

【参考方案2】:

如果您在 Activity 类之外调用 startActivity(),则必须将标志设置为新的 Activity。

holder.gMaps.setOnClickListener(new OnClickListener() 
        @Override
        public void onClick(View v) 

            Intent intent = new Intent().setClass(v.getContext(), GMaps.class);
            intent.putExtra("Longitude", mList.get(holder.position).get("Longitude").toString());
            intent.putExtra("Latitude", mList.get(holder.position).get("Latitude").toString());
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            v.getContext().startActivity(intent);

        
    );

【讨论】:

以上是关于如何从片段适配器启动活动的主要内容,如果未能解决你的问题,请参考以下文章

如何从片段返回主要活动

如何从一个片段移动到一个活动

通过另一个适配器访问一个适配器的数据

从活动更新视图页面中片段中的列表视图

如何将可扩展列表视图的选定子视图数据从片段发送到父活动?

需要解释从适配器发送数据到片段