2016-11-30 4 views
0

OnClickListenerを作成し、それをパラメータとしてsetOnBackButtonClickListenerメソッドに渡しました。私は初めてアプリケーションを起動するときに完全に正常に動作していますが、2回目に開くと例外が発生します。メソッドonViewCreatedを呼び出しているので、フラグメントLifeCycleに関連している可能性があります。ここでフラグメント内のビューをバインドできません

は例外である:ここでは

Process: com., PID: 12660 
java.lang.RuntimeException: Unable to bind views for com.presenter.view.fragment.ForgotPasswordFragment 
at butterknife.ButterKnife.bind(ButterKnife.java:322) 
at butterknife.ButterKnife.bind(ButterKnife.java:279) 

は私の断片である:

@Bind(R.id.action_bar) ActionBar actionBar; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRetainInstance(true); 


     DaggerForgotPasswordComponent.builder() 
       .applicationComponent(
         ((AndroidApplication) getActivity().getApplication()).getApplicationComponent()) 
       .forgotPasswordModule(new ForgotPasswordModule()) 
       .build() 
       .inject(this); 

    } 

    View.OnClickListener cl = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      navigateTo(LoginActivity.class); 
     } 
    }; 

    @Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     this.actionBar.setOnBackButtonClickListener(cl); 

    } 
+1

でそのようにバインドするようにしてください、それは 'すべきではありません@ BindView'? –

+0

いいえ、構文はバージョン8.0で変更されました。 @ Murat K. – Adnan

+0

バージョン8.4.0(最新)ではBindView ... *が離れています* – Jaythaking

答えて

2

はonCreateViewをオーバーライドして、ButterKnife

@BindView(R.id.action_bar) ActionBar actionBar; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    View fragmentView = inflater.inflate(R.layout.fragment_layout, container, false); 
    ButterKnife.bind(this, fragmentView); 

    return fragmentView; 
} 
+0

ありがとうございますが、私を助けてくれません。初めてアプリを開いたとき、すべてがうまくいきます。それを2番目に開こうとすると、例外が発生します。 @wojdor – Adnan

関連する問題