5
내 클래스가 DialogFragment에 인수를 전달해야하지만 내 앱이 NullPointerException에 대해 onCreate 메서드 (대화 클래스의)에서 충돌합니다. 코드의 대화 조각 클래스 부분 :DialogFragment 인수 및 nullpointer 예외
public class ConfirmDialog extends DialogFragment {
public ConfirmDialog() {}
ConfirmDialog newInstance(String f) {
ConfirmDialog d = new ConfirmDialog();
Bundle args = new Bundle();
args.putString("FILE_NAME", f);
d.setArguments(args);
return d;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
file = getArguments().getString("FILE_NAME");
}
나는이 라인에서 nullpointer 있습니다
file = getArguments().getString("FILE_NAME");
을 그리고 난 이유를 모르겠어. 가 나는 또한 코드가 대화 여기
private void showConfirmDialog(String file) {
FragmentManager fm = getSupportFragmentManager();
ConfirmDialog dialog = new ConfirmDialog();
Log.i("SHOWFILEACTIVITY", file);
dialog.newInstance(file);
dialog.show(fm, "fragment_confirm_dialog");
}
"파일"을 호출 붙여 문자열이 null이 아닌, 내가 다음,
Log.i("SHOWFILEACTIVITY", file);
감사합니다. 작동합니다. 나는 newInstance 함수를 사용한 적이 없으며 실수를 범했습니다! 하지만 왜 newInstance는 정적이어야합니까? – giozh
@giozh 우리는 Dialog의 새로운 인스턴스를 만들고 싶기 때문에 Dialog의 * 이미 생성 된 * 인스턴스에 의존하는 것은 나쁜 디자인 접근법입니다. 정적 메서드를 유지하면 종속성이 제거되고 개체 생성이 줄어 듭니다. –