2016-04-27 4 views
0

UpdateActivity.java:Android DataBindingは内部クラスを使用できますか?

public class UpdateActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     ActivityUpdateBinding dataBinding = DataBindingUtil.setContentView(this, R.layout.activity_update); 
    } 

    interface Listener { 
     void onClick(View v); 
    } 
} 

activity_update.xml:

<data> 
    <variable 
     name="listener" 
     type="com.kycq.reader.UpdateActivity$Listener"/> 
</data> 

i 'は、リスナー' を設定した場合、常にErrors.it iが内部クラスを設定することはできません平均である、または私がすべき他の方法で 'リスナー'を設定しますか?

答えて

3

内部クラスがpublic宣言されている限り、Androidのデータバインディングライブラリを使用して内部クラスにアクセスできます。私は内部クラスを公開していることを確認することができました。 com.kycq.reader.UpdateActivity$Listenerの代わりにcom.kycq.reader.UpdateActivity.Listenerを使用して、内部クラスにアクセスします。

+0

私はそれを知っています、私の質問は私が内部クラスを使用することができますか? –

+0

@csxはい、内部クラスは公開されている限り使用できます。あなたがなぜ '.'の代わりに' $ 'を使っているのかは分かりません。 – AgileNinja

+0

それは動作します!私はいつもインターフェイスがデフォルトパブリックであると思っており、インナークラスは$ –

関連する問題