【问题标题】:Android: Clipboard issueAndroid:剪贴板问题
【发布时间】:2014-09-25 17:42:27
【问题描述】:

我遇到了一个非常烦人的问题。我正在开发一个应用程序,现在我需要获取 TextView 中的文本并将其传递到剪贴板。换句话说,我需要复制文本。

android:textIsSelectable = "true" 适用于新版本,但我需要此应用程序在 API10 ( 2.3.3 ) 上运行

我试过了:

    import android.text.ClipboardManager;
    [ . . . ]
    private CharSequence code;
    [ . . . ]
    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {

        codeTextView.setOnLongClickListener(new OnLongClickListener() {

            public boolean onLongClick(View v) {
                code = codeTextView.getText();
                ClipboardManager clipboard = (android.text.ClipboardManager) getSystemService(CLIPBOARD_SERVICE); 
                clipboard.setText(code);
                Log.i(TAG, "COPIED! ->" + (clipboard.getText()));

                return false;
            }
        });

好的。问题是:CLIPBOARD_SERVICE 有错误: CLIPBOARD_SERVICE cannot be resolved to a variable

如何摆脱这个?我的意思是,如果我尝试删除它,似乎“getSystemService”方法不存在。 怎么回事?

注意事项:

  • 我正在使用 appcompat_v7
  • 在 Honeycomb 及以上版本上正常运行
  • 版本检查工作正常

【问题讨论】:

    标签: android textview deprecated android-appcompat clipboardmanager


    【解决方案1】:

    简单:

    使用Context.CLIPBOARD_SERVICE:

    ClipboardManager clipboard = (android.text.ClipboardManager) getActivity().getSystemService(Context.CLIPBOARD_SERVICE); 
    

    CLIPBOARD_SERVICEContext 的静态字段。我猜代码是在你得到它的地方在Context 的子类中使用的,因为你的不是Context 的子类,所以你必须把Context 放在前面。

    【讨论】:

    • 谢谢。我摆脱了错误。但随后,又出现了一个:The method getSystemService(String) is undefined for the type new View.OnLongClickListener(){}
    • 是的。您需要一个 Context 的实例来调用该方法。是Context的方法。
    • 那么我该怎么做呢?
    • 您必须将对 Context 实例的引用传递到执行此代码的位置。你在哪里运行这段代码?类的超类是什么?
    • public class BarCodeFragment extends Fragment implements OnItemClickListener 在我将内容设置为 textview 后,电话在OnCreateView
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多