web-dev-qa-db-ja.com

フラグメント内のfindViewById

フラグメントのスコープ内でIDでビューを見つける方法はありますか?一連のフラグメントを使用して、特殊なリストをレンダリングしています。フラグメントはレイアウトからロードされるため、それらのウィジェットはすべて同じIDを持ちます。

作成中(または作成直後)に各ウィジェットにカスタムIDを与える方法を見つけられると思います。ただし、findViewByIdをフラグメントのスコープに何らかの方法で制限できれば、もっといいでしょう。

24
Peri Hartman
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;
}
57
chris-tulip

フラグメント内から:

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);
23
Michael Celey

getView().findViewById()でできます

6
500865

はい、方法があります。rootViewで見つけることができます。最初にフラグメントrootView=getView();のrootViewを見つけてから、rootView.findViewById(...);を使用します

1
slezadav
  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);
    }
0
sms247