조각의 범위 내에서 ID별로보기를 찾을 수있는 방법이 있습니까? 특수 목록을 렌더링하기 위해 일련의 조각을 사용하고 있습니다. 파편은 레이아웃에서로드되므로 위젯의 ID는 모두 동일합니다.조각 내에서 findViewById
각 위젯에 생성하는 동안 (또는 생성 직후) 맞춤 ID를 제공하는 방법을 알아낼 수 있다고 가정합니다. 그러나 findViewById를 어떻게 든 조각의 범위로 제한 할 수 있다면 훨씬 더 좋을 것입니다.
조각의 범위 내에서 ID별로보기를 찾을 수있는 방법이 있습니까? 특수 목록을 렌더링하기 위해 일련의 조각을 사용하고 있습니다. 파편은 레이아웃에서로드되므로 위젯의 ID는 모두 동일합니다.조각 내에서 findViewById
각 위젯에 생성하는 동안 (또는 생성 직후) 맞춤 ID를 제공하는 방법을 알아낼 수 있다고 가정합니다. 그러나 findViewById를 어떻게 든 조각의 범위로 제한 할 수 있다면 훨씬 더 좋을 것입니다.
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;
}
MrFox를 볼 수 있습니다. 뷰를 팽창시켜야합니다. 그래서 나는 inflater.inflate (v, container)를 호출 할 것입니다. 즉, MCeley의 첫 번째 제안을 할 수는 있지만 onActivityCreated에서이 작업이 완료되었는지 확인하여 뷰가 비정상적으로 종료되었는지 확인하십시오. 그렇지 않으면 뷰를 부 풀리지 않고 onCreateView에서 수행하면 널 포인터가 생성됩니다. – dennisdrew
죄송합니다! 나는 그저 내가 가지고 있던 코드를 뽑아 내 팽창이 너무 심해서 그걸 놓쳤다. –
return 문 이외의 변수'v'에 대한 참조를 볼 수 없다. 이것은 오타입니까? 그렇다면 어떤 변수가 있어야합니까? – Spinner
예, 방법이 있습니다. rootView를 통해 찾을 수 있습니다. 먼저 당신의 조각 rootView=getView();
의 rootView을 찾은 다음 당신은 조각 내부에서 getView().findViewById()
를 사용
getFragmentManager().findFragmentByTag("YourFragmentTag").getView().findViewById(R.id.your_view);
: 바깥 쪽 활동에서
getView().findViewById(R.id.your_view);
또는
getFragmentManager().findFragmentById(R.id.your_fragment).getView().findViewById(R.id.your_view);
에 의해 그것을 할 수 rootView.findViewById(...);
때때로 getView()가 null이므로 어떤 작업을 수행합니까? – StackOverflowed
'onCreateView()'가 프래그먼트에 의해 호출되기 전에'getView()'만이 null입니다. 이 시점에서 뷰가 생성되지 않았기 때문에'findViewById()'를 사용하여 찾을 뷰가 없다. – MCeley
@McCeley 조각이 분리 된 후에 getView()가 호출되면 null도 반환합니까? Fragment의 getView() 호출이 null을 반환하는 시점에 대해서 궁금합니다. – StackOverflowed
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);
}
코드를 추가하면 대답하기가 훨씬 쉬울 것입니다. – tolgap
[findViewById in Fragment]의 가능한 복제본 (http://stackoverflow.com/questions/6495898/findviewbyid-in-fragment) – Sufian