簡體   English   中英

未將OnClickListener觸發為參數

[英]OnClickListener not triggered as parameter

我正在嘗試將OnClickListener設置為setOnBackButtonClickListener方法中的參數。已經創建了偵聽器的對象並將其設置為我方法中的參數,但是OnClickListener未觸發。

當我執行Log時,方法被調用,但它不會觸發偵聽器。

我想這是因為片段生命周期。

這是我的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);
    }

您可以將OnClickListener綁定為布局中的變量,並將其分配給視圖。

我通常對片段執行的View.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;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM