2015-02-04 3 views
0

나는이 문제에 대한 해결책을 찾을 수있는 대부분의 질문을 살펴 봤지만 제안 사항 중 아무 것도 내 문제로 보지 못했습니다. 나는 청소 및 프로젝트 재건 및 안드로이드 스튜디오 재시동을 시도했습니다. UI 요소를 검색하기 전에 팽창이 완료되었는지 확인하고 findViewById를 여러 가지 방법으로 배치 해봤습니다. 여기 그것이 어떻게되어야한다고 생각 하느냐 (그러나 여전히 효과가 없다). 또한 프래그먼트 트랜잭션을 커밋 한 후 Create에서 부모 액티비티의 다른 뷰를 검색하려고 시도했습니다. 또한 성공하지 못했습니다.findViewById가 null을 반환 함

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    super.onCreateView(inflater, container, savedInstanceState); 
    View v = inflater.inflate(R.layout.search_fragment,container,false); 

    seekBarDuration = (SeekBar) getActivity().findViewById(R.id.seekBarDuration); 
    return v; 
} 

@Override 
public void onActivityCreated (Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    seekBarDuration.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 

seekBarDuration이 null 참조이므로 응용 프로그램이 마지막 행에서 충돌합니다. Seekbar는 조각 자신의 레이아웃에 있습니다.

답변

2

안녕 당신이 활동에서 그걸 얻기 위해 노력하고있다 , 이렇게 코드를 변경하십시오. 당신이이 listener 당신이 @onCreateView 내부에두고 또는 Fragment를 구현하고 seekBarDuration.setOnSeekbarChangeListener(this);

는 희망이 도움이처럼 설정 할 수 있습니다 설정 어디도 변경

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     super.onCreateView(inflater, container, savedInstanceState); 
     View v = inflater.inflate(R.layout.search_fragment,container,false); 

     seekBarDuration = (SeekBar) v.findViewById(R.id.seekBarDuration); 
//Also set listener in here since seekBarDuration is on the Fragment not in Activity 
    seekBarDuration.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {}); 


     return v; 
    } 

    @Override 
    public void onActivityCreated (Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
    //This is called when the Activity is created, not the fragment. 
} 

.

Documentation

에 대한 자세한 정보
4

findViewById()을 부르지 말고 onCreateView()으로 전화하십시오. 방금 부풀린 View에 전화하십시오.

IOW 대체 :

seekBarDuration = (SeekBar) getActivity().findViewById(R.id.seekBarDuration); 

로 : 당신이 당신의보기는 조각`에 명시된 때

seekBarDuration = (SeekBar) v.findViewById(R.id.seekBarDuration);