我有这样的CustomDialogFragment
public class CustomDialogFragment extends DialogFragment { private LinearLayout containerView; public static CustomDialogFragment newInstance() { CustomDialogFragment fragment = new EDActionSheet(); return fragment; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Dialog dialog = new Dialog(getActivity()); dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); //MARK - containerView LinearLayout.LayoutParams containerViewLayoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); containerView = new LinearLayout(dialog.getContext()); containerView.setLayoutParams(containerViewLayoutParams); containerView.setOrientation(LinearLayout.VERTICAL); dialog.setContentView(containerView); DisplayMetrics displaymetrics = new DisplayMetrics(); dialog.getWindow().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); params.width = (int) (displaymetrics.widthPixels * 0.95); params.gravity = Gravity.BOTTOM; dialog.getWindow().setAttributes(params); return dialog; } public void setColor(int color) { containerView.setBackgroundColor(color); }
从外面我称之为DialogFragment.
CustomDialogFragment fragment = CustomDialogFragment.newInstance(); fragment.setColor(ContextCompat.getColor(this, Color.BLUE)); fragment.show(getFragmentManager(), "Dialog");
我得到了崩溃说
testapp.android.testapp E/AndroidRuntime: FATAL EXCEPTION: main Process: id.testapp.android.testapp, PID: 5749 java.lang.NullPointerException: Attempt to invoke virtual method 'void id.testapp.android.testapp.controls.CustomDialogFragment.setColor(int)' on a null object reference at id.testapp.android.testapp.controls.CustomDialogFragment.setColor(CustomDialogFragment.java:234)
有什么想法吗?