Android:从位于片段中的gridview的onItemClickListner开始新活动

时间:2014-07-16 03:24:42

标签: android gridview onitemclicklistener

我正在开发一个用于查看dicom图像的android应用程序,我将其存储在位图的arrayList中,我使用GridViewAdapter预览GridView中的图像。一个片段,然后用户选择一个图像在新活动中看到它,并通过实施onItemClickListner来完成。

当用户点击第一张图片时,它显示正确,但如果选择任何其他图像,我会收到此错误。

  

threadid = 12:线程以未捕获的异常退出(group = 0x40e6f930)

这是onItemClickListener实现

class imageClickListener implements OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        try {
            Bitmap selectedImage = cFindResult.get(arg2);

            Intent i = new Intent(getActivity(), DicomImageActivity.class);

            i.putExtra("Image", selectedImage);

            ShowRadiologyRequestsFragment.this.startActivity(i);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

cFindResultArrayList<Bitmap>

是否有人可以帮我了解可能出现的问题?

感谢。

4 个答案:

答案 0 :(得分:0)

嘿由于您未在此处发布错误日志,我们无法识别问题,但正如您在上面提到的错误,当DDMS与设备之间的通信出现问题时,会出现这些错误。它们通常是无害的,但您可以通过重新启动ADB服务器来解决它们:

adb kill-server
adb start-server

如果您正在使用模拟器并且这无法解决问题,请尝试删除并重新创建AVD。

注意:也请发布您的日志。

答案 1 :(得分:0)

将onItemClickListener代码替换为:

Intent i = new Intent(getApplicationContext(), DicomImageActivity.class);
                // passing array index
                i.putExtra("id", arg2);
                startActivity(i);

答案 2 :(得分:0)

只需用getActivity()代替ShowRadiologyRequestsFragment.this,

class imageClickListener implements OnItemClickListener {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        try {
            Bitmap selectedImage = cFindResult.get(arg2);

            Intent i = new Intent(getActivity(), DicomImageActivity.class);

            i.putExtra("Image", selectedImage);

            getActivity().startActivity(i);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

答案 3 :(得分:0)

不幸的是我尝试了建议的解决方案,但没有一个工作,但我设法通过将Bitmap对象定义为静态来解决问题,所以我可以从新活动访问它,我认为这是一个与可以在活动之间传递的对象的有限大小。