我正在开发一个基本的Android应用程序,它使用SAXParser从资产中解析xml文件,并且我已经成功解析了xml。
然后我使用以下代码注册Context的已解析文本:
..........
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;
}
使用上面的代码,当我长时间点击已解析文本的任何部分时,上下文菜单工作正常。但我的问题是,我不知道将解析后的文本放入剪贴板。有人可以帮帮我吗?提前谢谢。
答案 0 :(得分:0)
我已经解决了我的问题。我就是这样做的。
我从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