2016-01-01 16 views
6

कहा जाता है मैं इसकस्टम संवाद टुकड़ा क्रैश जब सेटर विधि

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 है।

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) 

किसी भी विचार कह मिल गया?

उत्तर

4

आपके containerView संदर्भ अभी तक प्रारंभ नहीं किया गया है। देखें कि onCreateDialog() को प्रारंभ करने से पहले कैसे कहा जाना चाहिए।

आपको कुछ तरीकों से एक में प्रतिक्रिया करने की आवश्यकता होगी। संभवतः सेटकॉलर विधि को केवल एक चर को स्टोर करने के लिए सबसे आसान होगा कि 'कंटेनर व्यू' को प्रारंभ होने पर भी अपनी पृष्ठभूमि को सेट करना चाहिए।

+0

सहायता के लिए धन्यवाद – JayVDiyk

संबंधित मुद्दे