0

我已经实现了一个带有 4 个选项卡的 FragmentPagerAdapter,并且我为每个选项卡关联了一个片段。问题是我无法与它们包含的元素交互,我尝试了以下方法:

        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        View view = inflater.inflate(R.layout.fragment1, container, false);

        // Some codes for layout such as findViewById
        ImageView img = (ImageView)findViewById(R.id.image);
        img.setOnClickListener(new ImageView.OnClickListener() {
            public void onClick(View v) {
                Log.i("Fragment", "This is a test"); 
            }
        });

        return view;
    }

此方法位于从“片段”继承的类中,并加载其中一个布局,有 4 个与此相同类型的类,每个选项卡一个。

方法“findViewById”失败,但如果我不能把它放在那里,我应该把它放在哪里?

非常感谢。

继续这个例子,我发现了一个新问题。其中一个视图加载带有图像的 GridView,如下所示:

        @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        View view = inflater.inflate(R.layout.init, container, false);

        final GridView grid = (GridView)view.findViewById(R.id.myGrid);            
        grid.setNumColumns(2);
        grid.setAdapter(new ImageAdapter(this));

        return view;
    }

问题是方法'new ImageAdapter(context)'接收变量类型Context作为参数加载到方法'newImageView(context)'它需要这种类型的变量并且传递'this'变量是Fragment类型但不是上下文,由于什么失败,我该如何解决?

提前致谢。

4

1 回答 1

0

当您从膨胀视图访问任何小部件时,您必须仅针对该视图获取它们

更改此行

 ImageView img = (ImageView)findViewById(R.id.image);

对此

 ImageView img = (ImageView) view.findViewById(R.id.image);

评论我的结果

于 2013-09-30T07:53:29.833 回答