最近做項目遇到一個很煩心的問題,就是刪除評論模塊,要用到接口,這個我是用volley方法傳入接口的url地址的,具體方法可以參考我的另外一篇博文:
Android實戰:使用Volley框架訪問服務器Json數據
請求完服務器數據,配置好需要的參數,需要返回的json字符串中判斷status是否爲true,如果爲true,就可以刪除帖子。配置的代碼如下:
<span style="font-family:Microsoft YaHei;font-size:12px;"> @Override
protected Map<String, String> getParams() {
HashMap<String, String> map = new HashMap<String, String>();
map.put("postId", String.valueOf(2));
map.put("userId", String.valueOf(3));
map.put("content", mycommment);
// Toast.makeText(SendCommentActivity.this, mycommment, Toast.LENGTH_SHORT).show();這一句不是主線程,不能在這裏加!!!否則傳參錯誤!!
Log.i("postId", String.valueOf(2));
Log.i("mycontent", mycommment);
return map;
}</span>
我檢查了請求接口地址,沒有錯;檢查了配置參數,也沒有錯;然而卻始終無法找到原因,log也沒有提示。這個問題糾結了我兩天,好氣啊!
最終我發現是這句話讓請求沒有返回結果:
<span style="font-family:Microsoft YaHei;font-size:12px;">Toast.makeText(SendCommentActivity.this, mycommment, Toast.LENGTH_SHORT).show();</span>
<span style="font-family:Microsoft YaHei;font-size:12px;">在android中,但凡有UI的改變,只能在主線程中進行,然後getParams卻不是主線程,所以程序執行到這一句就會停止。當然不能把map傳給後端進行刪除數據的sql操作。</span>
<span style="font-family:Microsoft YaHei;font-size:12px;">方法是把這句話刪掉即可。 如果要提示,在主線程中Toast。</span>