国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 同德县| 庆城县| 霍山县| 西昌市| 深州市| 崇文区| 喀什市| 文成县| 赤壁市| 曲麻莱县| 阿城市| 丹寨县| 临安市| 额尔古纳市| 吴旗县| 社旗县| 库伦旗| 文水县| 嘉义县| 博爱县| 康平县| 西和县| 临猗县| 肥东县| 武宁县| 鹿邑县| 岳阳市| 宿州市| 邓州市| 潼关县| 嘉义县| 西林县| 静宁县| 米泉市| 合阳县| 普兰店市| 衡南县| 石景山区| 克什克腾旗| 平乡县| 海城市|