【发布时间】:2013-09-27 04:29:48
【问题描述】:
我正在用 Android 编写一些东西,为了适应较旧的 SDK,我需要更改变量的形式。我正在使用ClipboardManager,它具有基于 SDK 的不同版本。问题是创建这个变量很容易,我必须在 if 中进行,并且由于未检测到变量,我的代码将无法编译。
例子:
if(android.os.Build.VERSION.SDK_INT >= 11){
final android.content.ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
} else {
final android.text.ClipboardManager clipboard = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
}
if (clipboard.hasPrimaryClip()) {
// Do stuff
}
因为剪贴板的实例依赖于SDK,if (clipboard.hasPrimaryClip())向我抱怨。
除了生成两个变量并检查是否为空之外,还有其他方法吗?
【问题讨论】:
-
我不是 Android 专家,但根据我找到的文档,
android.text.ClipboardManager没有hasPrimaryClip方法。所以如果版本是 clipboard.hasPrimaryClip() 做什么? -
@ajb 你说得对,旧 API 应该是
getText(),但这只是举例。 -
好吧,如果你必须为
if...else的两个不同分支调用一个不同命名的方法,那么我看不出你认为你能怎么做if之外的方法调用。但是,如果您要调用两者中确实 存在的某个方法,则可以将其声明为android.text.ClipboardManager(在if之外),因为该变量仍然能够保存一个android.content.ClipboardManager因为它是一个子类。 -
好的,我会替换它。关键是那只是一个例子,我没想到那个方法只是那个 API+。
标签: java android clipboardmanager