2017-02-08 80 views
0

我在碎片中的ButterKnife有問題。ButterKnife bind碎片問題

例如,我有2個片段,第一個片段在視圖中間有一個按鈕。我將其綁定:

unbinder = ButterKnife.bind(this, rootView); 

然後我實施@BindView@OnClick

@BindView(R.id.btnSignUp) 
Button btnSignUp; 

@OnClick(R.id.btnSignUp) 
public void signUpClick() { 

在SignUpClick當前片段與新的一個更換:

FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); 
transaction.setAllowOptimization(true); 
transaction.replace(R.id.frame_layout, fragment); 
transaction.addToBackStack(String.valueOf(fragment.getClass())); 
transaction.commit(); 

第二片段還包括一個按鈕屏幕頂部,用BindView實現。

的問題是 - 如果我在屏幕的中間有空白區域挖掘,signUpClick解僱,不知道哪裏是我的錯誤,或者是ButterKnife錯誤

+0

如何用'transaction.popBackStack();'彈出前一個片段。在添加新片段之前調用它。 –

回答

0

其因片段放置在堆棧中。所以如果第二個片段不需要點擊操作,它會傳遞給第一個片段。

您應該也可以在第二個片段按鈕上添加單擊偵聽器。

0

只需將一個點擊監聽器添加到空主體的第二個片段的根。假設R.id.root_fragment2是第二個片段的根佈局ID。

@OnClick(R.id.root_fragment2) 
public void onRootClicked() { 
} 

現在第二個片段會消耗點擊,並且不會將它傳遞給下面的片段。

0

第二個片段位於屏幕的頂部,但是當發出觸摸事件時,如果第二個片段不消耗該事件,則第一個片段仍然可以接受觸摸事件。 片段有一個根視圖,你可以像這樣設置視圖:rootView.setClickable(true);