아래 코드에서 버튼 클릭시 기본 대화 상자를 표시하려고합니다. 대화 상자에는 텍스트를 표시해야하는 몇 가지 필요가 표시됩니다. 내가 오류가 발생했을 때 나는 그것을 가지고있어,하지만 난 아직도 그 오류가 발생하는 질문에있어. DialogFragmentSubclass.onCreateView()에서 findViewById (R.id.someIdValue)를 호출하여 TextView에 대한 참조를 얻습니다. 이것은 나에게 NullPointerException을 준다. 그러나 전화로 참조를 얻는 것 :DialogFragment 서브 클래스에서 findViewById()를 호출하면 NullPointerException이 발생합니다.
View v = inflate.inflate(someREsourceValue, container, fals);
TextView tv = (TextView) v.findViewById(R.id.someValue);
것 같습니다. 왜이 기능이 작동하고 다른 하나는 NullPointerException을 발생시킵니다. 여기
public class MainActivity extends Activity {
DownloadImageDialogFragment myDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_layout);
// get reference to buttons
Button buttonDownloadImage = (Button) findViewById(R.id.downloadImage);
buttonDownloadImage.setText("Download new Image");
// upon button click, show a Dialog
buttonDownloadImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
FragmentTransaction ft = getFragmentManager().beginTransaction();
myDialog = new DownloadImageDialogFragment();
myDialog.show(ft, null);
}
});
}
private class DownloadImageDialogFragment extends DialogFragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_dialog, container, false);
// TextView tv = findViewById(R.id.dialogTextView); // this gives an error
TextView tv = (TextView) v.findViewById(R.id.dialogTextView); // this works
tv.setText("This is my dialog");
return v;
}
}
}
과을 (전체 코드는 아래를 참조), 대화 상자의 레이아웃 파일 :
<TextView
android:id="@+id/dialogTextView"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />
</LinearLayout>
조각은보기를위한 장소 홀더입니다. 먼저보기를 부 풀린 다음 사용하십시오. –