Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将文本从listview复制并共享到剪贴板_Android_Xml_Parsing_Copy_Clipboard - Fatal编程技术网

Android 将文本从listview复制并共享到剪贴板

Android 将文本从listview复制并共享到剪贴板,android,xml,parsing,copy,clipboard,Android,Xml,Parsing,Copy,Clipboard,我正在开发一个基本的Android应用程序,它使用SAXParser从资产中解析xml文件,我已经成功地解析了xml 然后,我使用以下代码注册上下文的解析文本: this.registerForContextMenu(content); @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContex

我正在开发一个基本的Android应用程序,它使用SAXParser从资产中解析xml文件,我已经成功地解析了xml

然后,我使用以下代码注册上下文的解析文本:

this.registerForContextMenu(content);


@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    super.onCreateContextMenu(menu, v, menuInfo);
    menu.setHeaderTitle("Choose");
    menu.add(0, v.getId(), 0, "Copy");
    menu.add(0, v.getId(), 0, "Share");

    if (selectedText.size() > 0) {
        menu.add(0, v.getId(), 0, "Copy");
        menu.add(0, v.getId(), 0, "Share");
    }

}

@Override
public boolean onContextItemSelected(MenuItem item) {
    if (item.getTitle() == "Copy") {
        copySelectedText(getSelectedText());
        return true;
    } else if (item.getTitle() == "Share") {
        shareSelectedText(getSelectedText());
        return true;
    } else
        return false;
}

public boolean copySelectedText(String text) {
    ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
    ClipData clip = ClipData.newIntent(position, getIntent());
    clipboard.setPrimaryClip(clip);
    return true;
}

private void shareSelectedText(String text) {
    copySelectedText(null);

    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    sharingIntent.setType("text/plain");
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, text);
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT,
            "Shared from MyApp");
    startActivity(Intent.createChooser(sharingIntent,
            "Sharing text using"));
}

public String getSelectedText() {

    //How do I code here?? }

    return null;
}

使用上述代码,当我长时间单击解析文本的任何部分时,上下文菜单工作正常。但我的问题是,我不知道如何将解析后的文本放入剪贴板。谁能帮帮我吗?提前谢谢。

我已经解决了我的问题。我是这样做的

我从assets文件夹解析了一个xml文件,并将结果传递到listview数组中。我最初的问题是如何在点击文本时复制文本。但现在我设法解决了我的问题,我在这里分享。希望它能帮助有类似问题的人

@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("Choose");
menu.add(Menu.NONE, CONTEXTMENU_COPY, 0, "Copy");
menu.add(Menu.NONE, CONTEXTMENU_SHARE, 1, "Share");
}


@Override public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {

case CONTEXTMENU_COPY:
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();

//The textview which holds the parsed xml
CharSequence selectedTexts = ((TextView)menuInfo.targetView.findViewById(R.id.text)).getText();
ClipboardManager clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("Intent", (CharSequence) selectedTexts);
clipboard.setPrimaryClip(clip);
Toast.makeText(getApplicationContext(), "Selected text is copied",Toast.LENGTH_SHORT).show();
break;

case CONTEXTMENU_SHARE:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
CharSequence textToShare = ((TextView) info.targetView.findViewById(R.id.text)).getText();
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_TEXT, textToShare);
shareIntent.setType("text/plain");
startActivity(Intent.createChooser(shareIntent, "Hiaite zangin share in"));
}
return super.onContextItemSelected(item); }
我所需要做的就是在确定要单击的项目之后,编写这行代码

CharSequence textToShare = ((TextView) info.targetView.findViewById(R.id.text)).getText();
这很简单,我可以踢自己。我希望它能对像我这样的新手有所帮助,也能让一些人免于初学者的头痛P