6

我正在实现一个应用程序,该应用程序在一个活动中具有图像网格视图,并且每个图像都有一个片段,其中包含全屏图像。当我单击网格中的任何图像时,它应该会打开相应的片段。但是,我们不能使用意图来执行此操作。这是我的代码

public void onItemClick(AdapterView<?> arg0, View arg1, int position,
                long arg3) {
            // TODO Auto-generated method stub
            if(position==0)
            {
                Intent i=new Intent(Gallery.this,ImageFrag1.class);
                startActivity(i);
            }

片段是

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ImageFrag1 extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
        Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.imagefrag1, container, false);
    }
}

此片段绑定到一个活动 ImagesSwipe。那么我如何实现网格视图项与其相应片段之间的转换。谢谢

4

2 回答 2

6

一张图片不需要一个片段。只需在每个图像的布局中重用一个带有 ImageView 的 Fragment。

片段不像活动那样通过 Intent 被调用。它们只能作为 Activity 的一部分存在,这就是它们的设计目的。将它们视为 Activity 的可重用 UI-Modul。要将 Fragment 添加到 Activity,您必须使用FragmentManagerFragmentTransaction类,它们提供与 Fragment 的所有交互。

    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.add(YourFragment.newInstance(), null);
    ft.commit();

查看Google Docs 中的指南,其中描述了有关 GridViews 的基本内容。此外,您应该阅读有关Fragments的信息。这是关于您的方法的教程。

于 2013-07-09T20:46:22.717 回答
1

您可能想查看 DialogFrament,这是一个示例

您使用 FramentManager 而不是使用意图:

if(position==0)
{
FragmentManager fm = getFragmentManager();
ImageFrag1 imageDialog = new ImageFrag1()
ImageFrag1.show(fm, "image_title");
}

你的 dialogFrament 变成:

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ImageFrag1 extends DialogFragment {

public ImageFrag1() {
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    return inflater.inflate(R.layout.dialog_fragment, container, false);
  }
}
于 2013-07-09T19:55:14.530 回答