簡體   English   中英

無法訪問類的內部接口

[英]Unable to access Inner Interface of class

我有一個適用於recyclerview的適配器類:

public abstract class RecyclerViewArrayAdapter<T, VH extends RecyclerView.ViewHolder>
        extends RecyclerView.Adapter<VH> {

        ...
  }

我正在創建一個這樣的對象:

  new RecyclerViewArrayAdapter<String, ListImageItemViewHolder>(emailAddresses) {
            @Override
            public ListImageItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
                return new ListImageItemViewHolder(v);
            }

            @Override
            public void onBindViewHolder(ListImageItemViewHolder holder, int position) {


                holder.setClickListener(new ListImageItemViewHolder.ClickListener() {
                    @Override
                    public void onClick(View v, int position, boolean isLongClick) {


                    }
                });
            }
        };

ListImageItemViewHolder定義如下所示:

public class ListImageItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {

    private ClickListener clickListener;


    public ListImageItemViewHolder(View itemView) {
        super(itemView);

        itemView.setOnClickListener(this);
        itemView.setOnLongClickListener(this);
    }

    public interface ClickListener {
        void onClick(View v, int position, boolean isLongClick);
    }


   public void setClickListener(ClickListener clickListener) {
        this.clickListener = clickListener;
    }
  }

一切看起來都很好,沒有紅色標記,但是一旦我編譯下面的行就會給我一個錯誤;

錯誤:(147,68)錯誤:找不到符號類ClickListener

像147一樣:

holder.setClickListener(new ListImageItemViewHolder.ClickListener() {
                    @Override
                    public void onClick(View v, int position, boolean isLongClick) {


                    }
                });

問題:為什么它無法訪問ClickListener ..

它讓我瘋了嗎?

我在這做什么錯...

更新:

我發現問題在於縮小。

buildTypes {release {minifyEnabled true}}

RecyclerViewArrayAdapter和ListImageItemViewHolder是名為“Common”的模塊的一部分。 我在我的項目中引用了這個模塊。

現在,當我將一個共同的gradle設置為“minify”為false時,它可以工作。 我改變它以縮小真實的那一刻,它又回來了。

它看起來像編譯問題。 但我不能忍受這個錯誤,也不能為生產構建設置minify為false。

有人可以幫我解決這個問題嗎?

在此輸入圖像描述

嘗試這個,

new ListImageItemViewHolder().clickListener = new ClickListener(){
                @Override
                public void onClick(View v, int position, boolean isLongClick) {


                }
            });

這行new ListImageItemViewHolder().clickListener引用ClickListener clickListener;

然后你實例化它..

使用訪問說明符public聲明clickListener

好的,沒有解決方案,但解決方法。 對我來說,代碼沒有錯。 沒有任何紅線,但在編譯時無法找到。 但是,當我將minify設置為false時,它會起作用(即使為發布版本設置了minify設置並且我作為調試運行)。

解決方案是將ClickListener接口與ListImageItemViewHolder類分開; 因此沒有嵌套接口。

 public interface ClickListener {
        void onClick(View v, int position, boolean isLongClick);
    }

暫無
暫無

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

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