第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

Android XML Layout Inflater 和抽象類

Android XML Layout Inflater 和抽象類

守著星空守著你 2021-09-29 13:27:33
如果一個 Activity 擴展了一個抽象類,它定義了一個方法,那么為什么沒有“找到”那個方法?我正在目睹 Android 中的一種行為,我無法判斷它是否是預期的結果。我有一個帶有方法的活動,該AppCompatViewInflater.onClick方法無法找到我有一個 Activity,在其中,我有 Button(s) 具有定義的android:onClick屬性(“方法(視圖視圖)”):單擊視圖時要在此視圖的上下文中調用的方法的名稱。此名稱必須對應于僅采用一個 View 類型參數的公共方法。例如,如果您指定 android:onClick="sayHello",則必須聲明您的上下文(通常是您的 Activity)的 public void sayHello(View v) 方法。在我的示例中,我有以下類:父示例活動abstract class ParentExampleActivity extends AppCompatActivity{    abstract void reset(View view);    abstract void update(View view);}示例活動class ExampleActivity extends ParentExampleActivity {    public void reset(View view) {...}    public void update(View view) {...}    public void alter(View view) {...}}我有以下布局<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context=".ExampleActivity">            <Button                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:onClick="alter"                android:text="ALTER"/>            <Button                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:onClick="update"                android:text="UPDATE"/>            <Button                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:onClick="reset"                android:text="RESET"/>    </LinearLayout>但導致:java.lang.IllegalStateException:在視圖類 android.support.v7.widget.AppCompatButton 上定義的 android:onClick 屬性的父級或祖先上下文中找不到方法 update(View)但是,該alter方法正在按預期工作......怎么來的?
查看完整描述

2 回答

?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

它似乎是兼容性功能或缺陷

在 3 個不同的設備中,我有不同的行為(我只有 3 個設備來測試 SM-T825、T815Y 和 XT1603)

在 SM-T825(棉花糖)中,我只有alter工作

在 T815Y(棒棒糖)中,我一切正常......

在 XT1603 (Kitkat) 中,我只能alter工作

在對我的代碼煩躁不安并進行了一些(未跟蹤的)更改之后,我能夠在所有 3 臺設備中進行部署,并且具有正確的行為。

似乎使 Android Studio 中的緩存無效并重新啟動是解決問題的方法。


查看完整回答
反對 回復 2021-09-29
?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

您確定更新和重置方法public在 ExampleActivity 類中有訪問修飾符嗎?因為 ParentExampleActivity 沒有public這些抽象方法的訪問修飾符。因此,當 android studio 在 ExampleActivity 中實現這些抽象方法時,它不會將它們公開。理想情況下,您的代碼應如下所示:


abstract class ParentExampleActivity extends AppCompatActivity{

    public abstract void reset(View view);

    public abstract void update(View view);

}

class ExampleActivity extends ParentExampleActivity {

    public void reset(View view) {...}

    public void update(View view) {...}

    public void alter(View view) {...}

}


查看完整回答
反對 回復 2021-09-29
  • 2 回答
  • 0 關注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

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

公眾號

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