Android 自定义视图内部接口引发异常
我有一个自定义视图,如下所示,带有一个内部界面来处理按钮单击Android 自定义视图内部接口引发异常,android,exception,interface,fragment,Android,Exception,Interface,Fragment,我有一个自定义视图,如下所示,带有一个内部界面来处理按钮单击 public class SavedContentCardView extends RelativeLayout { SavedItem[] mItems; TextView mHeader; Button mMoreButton; TextView mEmptyView; LinearLayout mContainer; OnMor
public class SavedContentCardView extends RelativeLayout {
SavedItem[] mItems;
TextView mHeader;
Button mMoreButton;
TextView mEmptyView;
LinearLayout mContainer;
OnMoreButtonClickListener mListener;
public SavedContentCardView(Context context) {
super(context);
initialize(context, null, 0);
}
public SavedContentCardView(Context context, AttributeSet set) {
super(context, set, 0);
initialize(context, null, 0);
}
public SavedContentCardView(Context context, AttributeSet set, int defStyle) {
super(context, set, defStyle);
initialize(context, null, 0);
}
private void initialize(Context context, AttributeSet set, int deftStyle) {
inflate(context, R.layout.saved_content_card_layout, this);
mHeader = (TextView) findViewById(R.id.headerTitle);
mMoreButton = (Button) findViewById(R.id.moreButton);
mEmptyView = (TextView) findViewById(R.id.emptyView);
mContainer = (LinearLayout) findViewById(R.id.main_container);
mMoreButton.setOnClickListener(v -> {
if (mListener != null) {
mListener.onMoreClicked();
}
});
}
public void loadItems(List<SavedItem> items) {
if (items == null || items.size() == 0) {
mEmptyView.setVisibility(VISIBLE);
mContainer.setVisibility(GONE);
mHeader.setVisibility(GONE);
mMoreButton.setVisibility(GONE);
} else {
for (SavedItem item : items) {
SavedContentRowView card = new SavedContentRowView(item, mContainer.getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
params.setMargins(0, 0, 0, 20);
mContainer.addView(card, mContainer.getChildCount(), params);
}
mEmptyView.setVisibility(GONE);
mContainer.setVisibility(VISIBLE);
mHeader.setVisibility(VISIBLE);
mMoreButton.setVisibility(VISIBLE);
}
}
public OnMoreButtonClickListener getMoreClickListener() {
return mListener;
}
public void setMoreClickListener(
OnMoreButtonClickListener listener) {
mListener = listener;
}
public interface OnMoreButtonClickListener {
void onMoreClicked();
}
}
请问,你在哪里初始化了你的听众? 你真的初始化了吗?mListener的价值是什么
mMoreButton.setOnClickListener(v -> {
if (mListener != null) {
mListener.onMoreClicked();
}
});
你能仔细检查一下你的活动包吗?您在清单中声明了吗?是的,我有一个正在运行的应用程序。当我在活动中实现内部片段时,我会遇到一个异常。您发布的代码与您面临的问题无关。任何地方都没有对
MainActivity
的引用。另外,您应该熟悉[Java编码约定][1],尤其是包、类和方法,然后更新代码以匹配,否则查看代码会有点痛苦。onmorebutonClickListener没有初始化我想好了,谢谢。这个V是从哪里来的?你能把这个->零件展开吗?
java.lang.NoClassDefFoundError: com.fragments.HomeFragment
mMoreButton.setOnClickListener(v -> {
if (mListener != null) {
mListener.onMoreClicked();
}
});