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

首頁 > 學院 > 開發設計 > 正文

ListView onItemLongClick 彈出ContextMenu

2019-11-09 15:47:40
字體:
來源:轉載
供稿:網友

開發了一個簡單的功能: 長按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); //關鍵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; }
上一篇:Box2d

下一篇:聚合支付

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 筠连县| 淳安县| 衡水市| 文化| 眉山市| 成都市| 顺义区| 蓬莱市| 江川县| 十堰市| 施秉县| 和林格尔县| 嵩明县| 曲沃县| 南开区| 旬阳县| 马关县| 丹寨县| 宜黄县| 繁昌县| 柏乡县| 安宁市| 循化| 涪陵区| 庄河市| 东台市| 墨脱县| 贡山| 梨树县| 桃江县| 凤山县| 云浮市| 平塘县| 大埔县| 德阳市| 随州市| 灵寿县| 沾化县| 嘉义市| 新宁县| 岚皋县|