2017-05-08 5 views
0

양식을 검증하기 전에 Saripaar 라이브러리를 사용하여 보내야합니다. 그러나 XML에서 문제가 부풀어 오르고 있는데 Butterknife와 충돌하는지는 알 수 없습니다. 콘솔에서 잡은Saripaar lib와 Butterknife 충돌 확인

오류 : 소스의

android.view.InflateException: Binary XML file line #17: Binary XML file line #17: Error inflating class TextView 
    Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class TextView 
    Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 4: TypedValue{t=0x2/d=0x1010099 a=1} 
     at android.content.res.TypedArray.getColor(TypedArray.java:459) 
     at android.widget.TextView.<init>(TextView.java:771) 
     at android.widget.TextView.<init>(TextView.java:704) 
     at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:62) 
     at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:58) 
     at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 
     at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1029) 
     at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1087) 
     at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:47) 
     at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater$WrapperFactory2.onCreateView(CalligraphyLayoutInflater.java:280) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769) 
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:495) 
     at uk.co.chrisjenx.calligraphy.CalligraphyLayoutInflater.inflate(CalligraphyLayoutInflater.java:60) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:426) 
     at android.view.LayoutInflater.inflate(LayoutInflater.java:377) 
     at android.widget.Editor.showError(Editor.java:453) 
     at android.widget.Editor.setError(Editor.java:489) 
     at android.widget.TextView.setError(TextView.java:5100) 
     at android.widget.TextView.setError(TextView.java:5085) 
     at com.testapp.probe.mvp.ui.login.LoginActivity.onValidationFailed(LoginActivity.java:166) 
     at com.mobsandgeeks.saripaar.Validator.triggerValidationListenerCallback(Validator.java:721) 
     at com.mobsandgeeks.saripaar.Validator.validateFieldsWithCallbackTill(Validator.java:697) 
     at com.mobsandgeeks.saripaar.Validator.validateUnorderedFieldsWithCallbackTill(Validator.java:679) 
     at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:334) 
     at com.mobsandgeeks.saripaar.Validator.validate(Validator.java:295) 
     at com.testapp.probe.mvp.ui.login.LoginActivity.validate(LoginActivity.java:141) 
     at com.testapp.probe.mvp.ui.login.LoginActivity.onServerLoginClick(LoginActivity.java:107) 
     at com.testapp.probe.mvp.ui.login.LoginActivity_ViewBinding$1.doClick(LoginActivity_ViewBinding.java:40) 
     at butterknife.internal.DebouncingOnClickListener.onClick(DebouncingOnClickListener.java:22) 
     at android.view.View.performClick(View.java:5637) 
     at android.view.View$PerformClick.run(View.java:22429) 
     at android.os.Handler.handleCallback(Handler.java:751) 
     at android.os.Handler.dispatchMessage(Handler.java:95) 
     at android.os.Looper.loop(Looper.java:154) 
     at android.app.ActivityThread.main(ActivityThread.java:6119) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

일부 importants 부품 :

@BindView(R.id.et_email) 
@Order(1) 
@NotEmpty(emptyTextResId = R.string.empty_email) 
@Email(messageResId = R.string.str_email_empty) 
EditText mEmailEditText; 

@BindView(R.id.et_password) 
@Order(2) 
@NotEmpty(emptyTextResId = R.string.empty_email) 
@Password(min = 4, scheme = 
Password.Scheme.ALPHA_NUMERIC_MIXED_CASE_SYMBOLS, messageResId = 
R.string.str_password_error) 
EditText mPasswordEditText; 

private Validator validator; 
private boolean validated; 

... 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

    ... 

    validator = new Validator(this); 
    validator.setValidationListener(this); 

} 

@OnClick(R.id.bt_login) 
void onServerLoginClick(View v) { 
    if(validate()) 
     mPresenter.onServerLoginClick(mEmailEditText.getText().toString(), mPasswordEditText.getText().toString()); 
} 

protected boolean validate() { 
    if (validator != null) 
     validator.validate(); 
    return validated;   // would be set in one of the callbacks below 
} 

@Override 
public void onValidationSucceeded() { 
    validated = true; 
} 

@Override 
public void onValidationFailed(List<ValidationError> errors) { 
    validated = false; 

    for (ValidationError error : errors) { 
     View view = error.getView(); 
     String message = error.getCollatedErrorMessage(this); 

     // Display error messages 
     if (view instanceof Spinner) { 
      Spinner sp = (Spinner) view; 
      view = ((LinearLayout) sp.getSelectedView()).getChildAt(0); 
     } 

     if (view instanceof TextView) { 
      TextView tv = (TextView) view; 
      tv.setError(message); 
     } 

     if (view instanceof EditText) { 
      EditText et = (EditText) view; 
      et.setError(message); 
     } 

     if(view instanceof TextInputEditText) { 
      TextInputEditText tiet = (TextInputEditText) view; 
      tiet.setError(message); 
     } 


    } 
} 
+0

'원인 : java.lang.UnsupportedOperationException : 색인 4의 속성을 분석하지 못했습니다. TypedValue {t = 0x2/d = 0x1010099 a = 1}'XML을 게시해야합니다. 사용한 타사 라이브러리에 문제가없는 것처럼 보입니다. –

답변

0

이에서 onCreate 방법에 ButterKnife.bind(this);를 추가합니다.

+0

죄송합니다. MVP + Dagger Arch에서 작업하고 있습니다. 내 OnCreate는 다음과 같습니다. @Override protected void onCreate (savedInstanceState 번들) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_login); getActivityComponent(). 주사 (this); setUnBinder (ButterKnife.bind (this)); mPresenter.onAttach (LoginActivity.this); validator = 새 유효성 검사기 (this); validator.setValidationListener (this); } – MAOL