2016-11-29 81 views
0

我想在我的setOnBackButtonClickListener方法中设置OnClickListener作为参数。已经创建的侦听器对象并将其设置为我的方法内的参数,但OnClickListener没有被触发。OnClickListener没有触发参数

当我做日志时,方法被调用,但它不会监听器。

我想这是因为Fragment LifeCycle。

这里是我的OnClickListener:

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

    super.onCreate(savedInstanceState); 
     setRetainInstance(true); 
    } 

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

这里是内部onViewCreated方法调用:

@Override 
    public void onViewCreated(View view, Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 
     actionBar.setOnBackButtonClickListener(clickL); 
    } 
+0

你得到任何异常? – mismanc

回答

0

可以绑定你的OnClickListener作为布局变量并将其分配给您的视图。

我通常用片段做的事情是让它实现View.OnClickListener,然后将片段绑定到布局。

布局:frag_test.xml

<?xml version="1.0" encoding="utf-8"?> 
<layout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <data> 
     <variable 
      name="fragment" 
      type="au.com.myapp.fragments.BaseFragment"/> 
    </data> 

    <TextView 
     android:id="@+id/tv_undo" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     style="@style/AppTheme.TextView" 
     android:text="UNDO" 
     android:onClickListener="@{fragment}"/> 

</layout> 

片段:

public class BaseFragment extends Fragment implements View.OnClickListener { 

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

     FragTestBinding binding = FragTestBinding.inflate(inflater); 

     // Set the layout's "fragment" variable so that this fragment handles the onClick. 
     binding.setFragment(this); 

     return binding.getRoot(); 
    } 

    @Override 
    public void onClick(View v) { 

     switch (v.getId()) { 

      case R.id.tv_undo: 
       // Your code in response to the click. 
       break; 
     } 
    } 
}