for (TextView currentText : txts) {
currentText.setTextSize(heightText);
currentText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager cm = (ClipboardManager)context.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setText(currentText.getText());
Toast.makeText(context, "Copied to clipboard", Toast.LENGTH_SHORT).show();
}
});
}
我已将以上代码放入我的 onCreate 方法中,我的应用程序需要在 API 8+ 上运行。
cm.setText(currentText.getText());
给我这个错误
无法在不同方法中定义的内部类中引用非最终变量 currentText。
并且上下文无法解析为变量。这里有什么问题?可以吗?在我的应用程序中使用已弃用的代码,因为我找不到任何其他可行的方法。
[编辑] 现在我的代码是这样的:
for (final TextView currentText : txts) {
currentText.setTextSize(heightText);
currentText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager cm = (ClipboardManager)this.getSystemService(Context.CLIPBOARD_SERVICE);
cm.setText(currentText.getText());
Toast.makeText(this, "Copied to clipboard", Toast.LENGTH_SHORT).show();
}
});
错误是
Toast 类型中的方法 makeText(Context, CharSequence, int)
不适用于参数 (new View.OnClickListener(){}, String, int)
getSystemService(String)
方法未定义类型 new View.OnClickListener(){}
最佳答案
尝试在 for
循环中声明变量 final
:
for (final TextView currentText : txts) {
至于context
,你需要一个context。试试 currentText.getContext()
。或者,由于这显然在 Activity
中,您可以简单地使用 MyActivityClassName.this
而不是 context
。
编辑:您已完成编辑。在 OnClickListener
中,您需要在要引用 Activity 时限定 this
。如果您的 Activity 类名为 MyActivity
,则应该可以使用如下代码:
for (final TextView currentText : txts) {
currentText.setTextSize(heightText);
currentText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
cm.setText(currentText.getText());
Toast.makeText(MyActivity.this, "Copied to clipboard", Toast.LENGTH_SHORT).show();
}
});
}
请注意,我在调用 getSystemService()
时去掉了 this.
限定符。替代方案是使用 MyActivity.this.getSystemService()
。
关于android - 我收到以下代码的错误并警告 ClipboardManager 类型已弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22549594/