国产探花免费观看_亚洲丰满少妇自慰呻吟_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

下一篇:聚合支付

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 育儿| 德钦县| 南开区| 长丰县| 嵊州市| 娄烦县| 拉孜县| 湖南省| 定结县| 香格里拉县| 永城市| 乐至县| 贡嘎县| 达尔| 长武县| 广昌县| 香格里拉县| 花垣县| 绩溪县| 涡阳县| 英超| 蒙阴县| 和硕县| 藁城市| 肇州县| 黑水县| 天柱县| 遂平县| 休宁县| 尉氏县| 新蔡县| 博野县| 江安县| 开原市| 宣武区| 家居| 澜沧| 广灵县| 松潘县| 平邑县| 汝南县|