【问题标题】:Understanding Copy/Paste Android了解复制/粘贴 Android
【发布时间】:2012-08-10 22:45:16
【问题描述】:

我正在关注 Android 开发者页面上的 guide 进行复制和粘贴。但是,有一个部分我不太明白,那就是使用纯文本粘贴的部分:

// Gets the ID of the "paste" menu item
MenuItem mPasteItem = menu.findItem(R.id.menu_paste);

// If the clipboard doesn't contain data, disable the paste menu item.
// If it does contain data, decide if you can handle the data.
if (!(clipboard.hasPrimaryClip())) {

mPasteItem.setEnabled(false);

} else if (!(clipboard.getPrimaryClipDescription().hasMimeType(MIMETYPE_TEXT_PLAIN))) {

    // This disables the paste menu item, since the clipboard has data but it is not plain text
    mPasteItem.setEnabled(false);
} else {

    // This enables the paste menu item, since the clipboard contains plain text.
    mPasteItem.setEnabled(true);
}
}

我可以理解大部分内容,但让我措手不及的是成员变量的使用。我知道这些指南不是 1:1 的代码,但我只是发现并没有看到一个名为“menu”的变量。所以,我问那些可能比我更了解 Android 的人,这个变量的目的是什么?我知道我回去编辑了 menu.xml 文件,所以我有一个“复制”和“粘贴”项目(这个“教程”似乎使用了),但现在我不知道如何实例化/初始化这个菜单,我也不知道它的用途。谁能给我解释一下?

谢谢。

【问题讨论】:

    标签: android android-menu clipboardmanager


    【解决方案1】:

    愚蠢的 Android 开发人员,使用未记录的变量...

    这是对包含Menu 的某些布局的引用,在该布局中可以找到粘贴按钮(MenuItem)。此项目的 ID 为 menu_paste,您可能知道也可能不知道。

    实际上,这个menu 变量可以是包含您的菜单项的任何Menu 布局。您可以了解如何创建Menus here

    【讨论】:

    • 我制作了一个菜单,然后如何初始化这个“菜单”变量?
    • 这取决于您如何创建菜单。看,在某些情况下,假设您正在设置Action Bar or options menu,您的代码将进入onCreateOptionsMenu(...) 方法。在那里,menu 项目已经存在,这就是您要使用的项目。
    • 我在那个方法中有getMenuInflater().inflate(R.menu.activity_main, menu); return true;,它发送一个菜单。我应该将菜单发送到我的 pasteText() 方法吗?
    • 使用ClipDescription.MIMETYPE_TEXT_PLAIN
    • 啊,好吧,这是他们制定的方法。实际上,您甚至都不需要它;您只是在复制文本,因此您不需要在 pasteData = item.getText(); 之后保留任何内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多