나는 Fragment
을 넣은 FragmentActivity
을 가지고 있습니다. 상황에 따라 해당 조각의 레이아웃에서 Buttons
에 액세스하여 해당 수신기의 클릭 리스너를 변경하려고합니다.FragmentActivity에서 조각보기보기
View view = myFragment.getView();
Button myButton = (Button) view.findViewById(R.id.my_button);
myButton.setOnClickListener(new MyClickListener());
그러나 view
변수는 항상 null
입니다 :
내가 뭘 같습니다.
활동을 어떻게 볼 수 있습니까? 작품을
public class YourFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.your_fragment, null);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
View view = getView();
if(view != null) {
view.findViewById(R.id.my_button).setOnClickListener(new MyClickListener());
}
}
}
이 코드해야합니다 이것을 시도
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
public class DetailFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.details, container, false);
return view;
}
public void setSettings(){
Button button = (Button) getView().findViewById(R.id.my_button);
button.setOnClickListener(new MyClickListener());
}
}
myFragment가 추가되어 표시됩니까? –
당신은'view'가 아니라 여러분의 액티비티의 뷰 계층 구조에서'findViewById()'를 호출하고 있다는 것을 주목하십시오. – laalto
'Button myButton = (Button) findViewById (R.id.my_button);'를 실행하면,'fragment view'가 아닌 현재 뷰의 버튼을 찾으려고합니다. 따라서 예상대로 작동하지 않습니다. –