在片段中查找Gridlayout

时间:2018-03-19 01:55:46

标签: java android-studio android-fragments

我一直试图弄清楚如何使用findViewById在片段中找到Gridlayout。我到处寻找,并且很惊讶没有发现任何人在我的类似情况下的指示。我在Android工作室中使用了一个标签布局,标签是不同的片段,其中有Gridlayouts,它们具有打开新活动的cardview。我已提供以下代码以显示我正在使用的内容:

public class PCpage extends Fragment {

GridLayout pcGrid;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View mainPc = inflater.inflate(R.layout.pc_main, container, false);
    return mainPc;

    pcGrid = (GridLayout) mainPc.findViewById(R.id.pcGrid);

    setSingleEvent(pcGrid);

}

private void setSingleEvent(GridLayout pcGrid){
    for(int i =0; i<pcGrid.getChildCount();i++){
        CardView cardView = (CardView)pcGrid.getChildAt(i);
        final int acterI = i;
        cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(acterI == 0){
                    Intent intent = new Intent(PCpage.this.getActivity(), Parsecards.class);
                    startActivity(intent);
                }
                else if(acterI == 1){
                    Intent intent = new Intent(PCpage.this.getActivity(), Parsecards.class);
                    startActivity(intent);
                }
        });
    }
  }
}

以下行似乎不想解决并返回错误“无法访问的语句”:

pcGrid = (GridLayout) mainPc.findViewById(R.id.pcGrid);

对于为什么会发生这种情况或者如何解决这个问题以及让它发挥作用的任何反馈都将非常感谢!

3 个答案:

答案 0 :(得分:0)

return语句后的任何内容都不会被执行;该方法返回一个值并完成。将行移至return语句之前的某处。

答案 1 :(得分:0)

在执行此操作之前,您将返回mainPc:

pcGrid = (GridLayout) mainPc.findViewById(R.id.pcGrid);

setSingleEvent(pcGrid);

所以只需移动return mainPc作为onCreateView

中的最后一行

答案 2 :(得分:0)

我认为你必须把这一行:

return mainPc;

这一行之后:

setSingleEvent(pcGrid);