亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法調用自定義 ConstraintLayout 類的方法?

無法調用自定義 ConstraintLayout 類的方法?

30秒到達戰場 2021-10-28 09:30:20
我想創建一個自定義 ConstraintLayout 以便我可以從其初始化的活動中觸發一些功能。我有以下代碼:首先在布局中初始化我的自定義視圖:<package.com.app.Main.LavadasView        android:id="@+id/main_autolavados_lavadas_lavadas_view"        android:layout_width="0dp"        android:layout_height="25dp"...        />這是我的自定義類 LavadasView,從另一個 XML 文件初始化的約束布局:Java類public class LavadasView extends ConstraintLayout {    public LavadasView(Context context,AttributeSet attrs) {        super(context);//Inflate view from XML layout file        LayoutInflater inflater =(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);        inflater.inflate(R.layout.lavadas_view, this);    }    public void resetView(){        //Some ui updates    }}LavadasView xml 文件,只是一個普通的約束布局:<?xml version="1.0" encoding="utf-8"?>    <android.support.constraint.ConstraintLayout        xmlns:android="http://schemas.android.com/apk/res/android"        xmlns:app="http://schemas.android.com/apk/res-auto"        xmlns:tools="http://schemas.android.com/tools"        android:layout_width="match_parent"        android:layout_height="match_parent"></android.support.constraint.ConstraintLayout>在我的 Activity 中findViewById,我使用 mehtod獲取實例,然后我想調用 resetView 函數,這給了我一個與 LavadasView 相關的空指針異常:LavadasView lavadasView = (LavadasView) findViewById(R.id.main_autolavados_lavadas_lavadas_view);//Call this method later on        lavadasView.resetView();所以我做錯了什么?我查了一下,這不是獲取布局實例的正確方法嗎?
查看完整描述

1 回答

?
呼如林

TA貢獻1798條經驗 獲得超3個贊

問題在于您的LavadasView. 當您Activity膨脹時,它會LavadasView(Context context, AttributeSet attrs)在您的自定義布局上調用構造函數。在此構造函數,你需要調用super(context, attrs)ConstraintLayout要適當充氣,但你只叫super(context)這就是為什么你得到的NullPointerException


查看完整回答
反對 回復 2021-10-28
  • 1 回答
  • 0 關注
  • 214 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號