2016-06-28 13 views
0

동적으로 TextInputLayout을 추가하고 있는데 힌트를 사용하지 않도록 설정하는 동안 충돌이 발생합니다. 다음은 코드입니다.힌트를 비활성화하는 동안 TextInputLayout nullpointer 예외가 발생했습니다.

private TextInputLayout createNewTextInputLayout() { 
    final LinearLayout.LayoutParams lParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

    final EditText editText = new EditText(this); 
    editText.setLayoutParams(lParams); 
    editText.setHint(getString(R.string.lbl_email_sms_notification)); 
    editText.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorGrayListHeaderFontColor)); 
    editText.setHintTextColor(ContextCompat.getColor(getApplicationContext(), R.color.colorGrayListHeaderFontColor)); 

    TextInputLayout txtInputLayout = new TextInputLayout(this); 
    lParams.setMargins(0, 25, 0, 0); 
    txtInputLayout.setLayoutParams(lParams); 
    txtInputLayout.setHintEnabled(false); 
    txtInputLayout.addView(editText); 

    return txtInputLayout; 
} 

로그인은 다음과 같습니다 : TextInputLayout에서 mEditText가 null 동일하기 때문에

Process: com.test, PID: 18328 java.lang.RuntimeException: 
Unable to start activity ComponentInfo{com.test/com.test.view.activity.SelectAlertReviewActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.widget.EditText.getHint()' on a null object reference 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2658) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 
at android.app.ActivityThread.access$900(ActivityThread.java:172) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:145) 
at android.app.ActivityThread.main(ActivityThread.java:5832) 
at java.lang.reflect.Method.invoke(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:372) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 
'java.lang.CharSequence android.widget.EditText.getHint()' on a null object reference 
at android.support.design.widget.TextInputLayout.setHintEnabled(TextInputLayout.java:376) 
at com.test.view.activity.SelectAlertReviewActivity.createNewTextInputLayout(SelectAlertReviewActivity.java:291) 
at com.test.view.activity.SelectAlertReviewActivity.initializeGUI(SelectAlertReviewActivity.java:144) 
at com.test.view.activity.SelectAlertReviewActivity.onCreate(SelectAlertReviewActivity.java:79) 
at android.app.Activity.performCreate(Activity.java:6221) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2611) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2723) 

at android.app.ActivityThread.access$900(ActivityThread.java:172)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1422)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:145)  
at android.app.ActivityThread.main(ActivityThread.java:5832)  
at java.lang.reflect.Method.invoke(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:372)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)  
+1

당신이 당신의 로그를 게시 할 수 있을까? –

+0

로그가있는 편집 된 질문 – Dhrupal

+0

내 솔루션을 사용해 보셨습니까? –

답변

1

문제가 발생합니다. setHintEnabled(boolean)에 전화하기 전에보기를 추가해야합니다.

변경 :

TextInputLayout txtInputLayout = new TextInputLayout(this); 
lParams.setMargins(0, 25, 0, 0); 
txtInputLayout.setLayoutParams(lParams); 
txtInputLayout.setHintEnabled(false); // here you have null pointer 
txtInputLayout.addView(editText); 

에 :

TextInputLayout txtInputLayout = new TextInputLayout(this); 
lParams.setMargins(0, 25, 0, 0); 
txtInputLayout.setLayoutParams(lParams); 
txtInputLayout.addView(editText); // add view as first step 
txtInputLayout.setHintEnabled(false); // disable hint after setting editText