首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我收到的错误是因为下面的代码和警告类型ClipboardManager是不推荐的

我收到的错误是因为下面的代码和警告类型ClipboardManager是不推荐的
EN

Stack Overflow用户
提问于 2014-03-21 03:30:49
回答 1查看 152关注 0票数 1
代码语言:javascript
复制
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。而上下文不能解析为变量。这里怎么了?在我的应用程序中使用不推荐的代码可以吗,因为我找不到其他可以工作的方法。

编辑现在我的代码如下所示:

代码语言:javascript
复制
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(){}类型

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 03:33:05

尝试在final循环中声明变量for

代码语言:javascript
复制
for (final TextView currentText : txts) {

至于context,您需要一个上下文。试试currentText.getContext()。或者,由于这显然是在一个Activity中,您可以简单地使用MyActivityClassName.this而不是context

编辑:你已经接近你的编辑了。在OnClickListener中,当要引用活动时,需要限定this。如果您的活动类名为MyActivity,下面这样的代码应该可以工作:

代码语言:javascript
复制
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()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22549594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档