【发布时间】:2014-03-16 09:57:25
【问题描述】:
我以编程方式用 checkBoxPreference 对象填充一个列表。对于新的 android SDK,有一个之前没有实现的方法 setIcon()。
所以我扩展了 checkBoxPreference 类并实现了类似于gist 的 setIcon()。我的新类名为 IconCheckBoxPreference,它与 Kitkat [新 SDK] 存在问题。
我想要类似的东西
Object cbp;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB){
cbp = new checkBoxPreference(this);
casted_cbp = CastAccordingToClass(cbp, checkBoxPreference.class); //TODO!
}else{
cbp = new IconCheckBoxPreference(this, null);
casted_cbp = CastAccordingToClass(cbp, IconCheckBoxPreference.class); //TODO!
}
casted_cbp.setTitle("My Title");
casted_cbp.setIcon(getResources().getDrawable(R.drawable.bla));
并在没有其他 SDK 条件的情况下使用变量“casted_cbp”继续我的代码。 “casted_cbp”的类型可以做什么?有没有办法这样做? 在这种情况下,最佳做法是什么?
【问题讨论】:
-
如果这两个没有包含您要在转换对象上使用的方法的公共超类,则不可能。
-
普通超类其实是同一个类,有两个不同的版本:“checkBoxPreference”。旧版本没有 setIcon()。
-
...that includes the methods you want to use on the casted object...
标签: java android class casting