国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

ListView onItemLongClick 彈出ContextMenu

2019-11-09 17:03:10
字體:
供稿:網(wǎng)友

開發(fā)了一個(gè)簡(jiǎn)單的功能: 長(zhǎng)按ListView中的item后, 彈出選擇菜單:

public class NetworktoolActivity extends Activity implements View.OnClickListener, AdapterView.OnItemLongClickListener{ boolean isSendItem = false; int selectPos = -1; @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { isSendItem = tranAdapter.isSendItem(position); selectPos = position; registerForContextMenu(view); openContextMenu(view); unregisterForContextMenu(view); return false; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.add("COPY"); if(isSendItem)menu.add("RETRY"); else menu.add("SAVE AS FILE"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { if(item.getTitle().equals("COPY")){ ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); cm.setPRimaryClip(ClipData.newPlainText(TAG, tranAdapter.getContent(selectPos))); }else if(item.getTitle().equals("RETRY")){ etUrl.setText(tranAdapter.getContent(selectPos)); onClick(btGo); }else if(item.getTitle().equals("SAVE AS FILE")){ saveAsFile(tranAdapter.getItem(selectPos)); } return true; }

出了異常:

02-08 14:26:04.733 11061-11061 E/AndroidRuntime: FATAL EXCEPTION: main java.lang.StackOverflowError at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.widget.AbsListView.showContextMenuForChild(AbsListView.java:2856) at android.view.View.showContextMenu(View.java:4277) at android.app.Activity.openContextMenu(Activity.java:2879) at com.ansondroider.networktool.NetworktoolActivity.onItemLongClick(NetworktoolActivity.java:89) at android.

修正代碼如下:

public class NetworktoolActivity extends Activity implements View.OnClickListener, AdapterView.OnItemLongClickListener{ String TAG = "NetworktoolActivity"; EditText etUrl; Button btGo; ListView lvInfos; TransactionAdapter tranAdapter; H h; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_networktool); init(); } void init(){ etUrl = (EditText)findViewById(R.id.etUrl); btGo = (Button)findViewById(R.id.btGo); btGo.setOnClickListener(this); lvInfos = (ListView)findViewById(R.id.lvInfo); lvInfos.setOnItemLongClickListener(this); tranAdapter = new TransactionAdapter(this); lvInfos.setAdapter(tranAdapter); //關(guān)鍵CODE registerForContextMenu(lvInfos); } @Override public void onClick(View v) { if(v == btGo){ startNewRequest(etUrl.getText().toString()); } } void startNewRequest(final String url){ new Thread(){ @Override public void run() { Transaction t = new Transaction(); t.id = t.hashCode(); t.url = url; t.reqTime = TimeUtils.getTimeString(); t.res = "waiting..."; Message msg = h.obtainMessage(H.MSG_ADD, t); h.sendMessage(msg); byte[] content = HttpUtilsAndroid.getByteContentFromURL(url); t.resTime = TimeUtils.getTimeString(); t.rawData = content; t.res = content != null ? new String(content) : "ERROR"; h.sendEmptyMessage(H.MSG_UPDATE); } }.start(); } boolean isSendItem = false; int selectPos = -1; @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { isSendItem = tranAdapter.isSendItem(position); selectPos = position; //----------遞歸來源---------- //registerForContextMenu(view); //openContextMenu(view); //unregisterForContextMenu(view); return false; } @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) { menu.add("COPY"); if(isSendItem)menu.add("RETRY"); else menu.add("SAVE AS FILE"); super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { if(item.getTitle().equals("COPY")){ ClipboardManager cm = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); cm.setPrimaryClip(ClipData.newPlainText(TAG, tranAdapter.getContent(selectPos))); }else if(item.getTitle().equals("RETRY")){ etUrl.setText(tranAdapter.getContent(selectPos)); onClick(btGo); }else if(item.getTitle().equals("SAVE AS FILE")){ saveAsFile(tranAdapter.getItem(selectPos)); } return true; }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三台县| 兰坪| 满城县| 南涧| 平远县| 外汇| 定南县| 合作市| 张家港市| 岚皋县| 蒙阴县| 贵阳市| 和田市| 大足县| 丰台区| 汉阴县| 全椒县| 宣武区| 渝北区| 鹤岗市| 九龙县| 珲春市| 尼玛县| 体育| 微博| 鸡东县| 南平市| 鹰潭市| 娄底市| 利川市| 洮南市| 攀枝花市| 湟源县| 周口市| 巩义市| 榆林市| 姜堰市| 漳平市| 吉林省| 新巴尔虎左旗| 三河市|