片段内的findViewById

时间:2012-09-21 18:25:42

标签: android android-fragments findviewbyid

有没有办法在片段范围内通过id查找视图?我正在使用一系列片段来呈现专门的列表。片段是从布局加载的,因此它们的小部件都具有相同的ID。

我想我可以找到一种方法,在创建期间(或之后)为每个小部件提供自定义ID。但是,如果我能以某种方式将findViewById限制在片段的范围内,那将会更好。

5 个答案:

答案 0 :(得分:57)

private View myFragmentView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{
    myFragmentView = inflater.inflate(R.layout.myLayoutId, container, false);
    myView = myFragmentView.findViewById(R.id.myIdTag)

    return myFragmentView;
}

答案 1 :(得分:23)

从碎片内部:

getView().findViewById(R.id.your_view);

从附上的活动:

getFragmentManager().findFragmentByTag("YourFragmentTag").getView().findViewById(R.id.your_view);

getFragmentManager().findFragmentById(R.id.your_fragment).getView().findViewById(R.id.your_view);

答案 2 :(得分:6)

您可以getView().findViewById()

执行此操作

答案 3 :(得分:1)

是的,有一种方法,您可以通过rootView找到它。首先找到片段rootView=getView();的rootView,然后使用rootView.findViewById(...);

答案 4 :(得分:0)

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootview=null;

             rootview=inflater.inflate(R.layout.fragment_web_view, container, false);
           ListView lv = (ListView)rootview.findViewById(android.R.id.list);

return rootview;
        // Inflate the layout for this fragment
        //return inflater.inflate(R.layout.fragment_web_view, container, false);
    }