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();
}
});错误是类型中的makeText(Context, CharSequence, int)方法,Toast不适用于参数(new View.OnClickListener(){}, String, int),方法getSystemService(String)未定义为new View.OnClickListener(){}类型
发布于 2014-03-21 03:33:05
尝试在final循环中声明变量for:
for (final TextView currentText : txts) {至于context,您需要一个上下文。试试currentText.getContext()。或者,由于这显然是在一个Activity中,您可以简单地使用MyActivityClassName.this而不是context。
编辑:你已经接近你的编辑了。在OnClickListener中,当要引用活动时,需要限定this。如果您的活动类名为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();
}
});
}注意,我在调用this.时去掉了getSystemService()限定符。另一种选择是使用MyActivity.this.getSystemService()。
https://stackoverflow.com/questions/22549594
复制相似问题