SharedPreferences中Json对象session部分字符串替换

SharedPreferences中Json对象session部分字符串替换,涉及到部分字符串的更新,又不想重新load服务器的数据

实现方法:

package X;XX

XXX

public class C_My1InfoPopWindows extends C_BaseActivity {
	
	private EditText editText;
	private String fromText,fromType,fromDefaultVal;
    private String session;
    JSONObject sessionJson;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.correcting_my_info_modify);
		
		initDataAndView();
	}
	
	@TargetApi(Build.VERSION_CODES.HONEYCOMB)
	private void initDataAndView() {

		editText = (EditText) findViewById(R.id.editText);
		fromText = getIntent().getStringExtra("text");
		fromType = getIntent().getStringExtra("type");
		fromDefaultVal = getIntent().getStringExtra("defaultText");
		
		editText.setText(fromText);
		/**光标移到到文本最后*/
		CharSequence text = editText.getText();
		if (text instanceof Spannable) {
			Spannable spanText = (Spannable)text;
			Selection.setSelection(spanText, text.length());
		}
		
		switch (fromType) {
		
		case "name": 
			editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)});
		break;
		case "phone": 
			editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(11)});
			editText.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_VARIATION_NORMAL);
			break;
		case "email": 
			editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)});
			editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
			break;
		case "company": 
			editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)});
			break;
		
	}
		
	}
	
	public void save(View v) {
		
		String saveStr = editText.getText().toString().trim();
		
		if (StringUtil.isEmpty(saveStr)) {
			//要保存的字符串是空的,设置默认值
			new SaveDataAsynctask().execute(fromDefaultVal);
			return;
			
		} else {
			
			//非空进行校验正确性
			
			String regexEmail = "^[\\w-]+(\\.[\\w-]+)*\\@([\\.\\w-]+)+$";
			String regexPhone = "^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$";
			String regex =  (fromType.equals("phone")) ? regexPhone : (fromType.equals("email")) ? regexEmail : null;
			
			//如果需要校验的类型文本
			if (regex != null) {
				
				boolean isPass = Pattern.matches(regex, saveStr);
				
				if (!isPass) {
					
					Toast.makeText(this, "您输入的格式错误!", Toast.LENGTH_SHORT).show();
					return;
					
				}
				
			}  
				
			new SaveDataAsynctask().execute(saveStr);
			
		}
		
		
	}
	
	private class SaveDataAsynctask extends AsyncTask<String, Void, String> {
		
		@Override
		protected String doInBackground(String... params) {

			String isRet = null;
			
			//http://115.29.238.140:8017/api.ashx?fdBuyeIP=14.150.164.199&fdBuyeName=qwww&method=Buyer.Update&userUUID=f0ff399d-4a4e-4a8a-8e72-73bff8d08e90&fdBuyeUnit=广州驴车&fdBuyeStatus=0&fdBuyeEmail=&fdAutoId=0&fdBuyeId=193&propStatusName=正常的&fdBuyeMobile=15521392526&fdBuyeImage=http://115.29.238.140:8017/plugin/upload/web/store/demand/635866545788924671.png&fdBuyeAddress=
			//"http://115.29.238.140:8017/api.ashx?"
			//fdBuyeIP=14.150.164.199&
			/*fdBuyeName=qwww&
			method=Buyer.Update&
			userUUID=f0ff399d-4a4e-4a8a-8e72-73bff8d08e90&
			fdBuyeUnit=广州驴车&
			fdBuyeStatus=0&
			fdBuyeEmail=&
			fdAutoId=0&
			fdBuyeId=193&
			propStatusName=正常的&
			fdBuyeMobile=15521392526&
			fdBuyeImage=http://115.29.238.140:8017/plugin/upload/web/store/demand/635866545788924671.png&
			fdBuyeAddress=*/
			
			try {
				session = getSharedPreferences(Properties.LOGIN_INFO, 0).getString("o2OSetSession", null);
				
				if(session == null) return null;
				sessionJson = new JSONObject(session); 
				String detail = sessionJson.getString("detail");
				JSONObject detailJson = new JSONObject(detail);
				
				String propStatusName , fdBuyeId ,fdBuyeMobile , 
					   fdBuyeEmail , fdBuyeUnit ,fdBuyeAddress ,
					   fdBuyeName ,fdBuyeIP ,fdBuyeStatus ,fdBuyeImage ,fdAutoId;
				
				propStatusName = detailJson.getString("propStatusName");
				fdBuyeId = detailJson.getString("fdBuyeId");
				fdBuyeMobile = detailJson.getString("fdBuyeMobile");
				fdBuyeEmail = detailJson.getString("fdBuyeEmail");
				fdBuyeUnit = detailJson.getString("fdBuyeUnit");
				fdBuyeAddress = detailJson.getString("fdBuyeAddress");
				fdBuyeName = detailJson.getString("fdBuyeName");
				fdBuyeIP = detailJson.getString("fdBuyeIP");
				fdBuyeStatus = detailJson.getString("fdBuyeStatus");
				fdBuyeImage = detailJson.getString("fdBuyeImage");
				fdAutoId = detailJson.getString("fdAutoId");
				
				switch (fromType) {
				
					case "name": 
						fdBuyeName = params[0];
						detailJson.put("fdBuyeName", fdBuyeName);
					break;
					case "phone": 
						fdBuyeMobile =  params[0];
						detailJson.put("fdBuyeMobile", fdBuyeMobile);
						break;
					case "email": 
						fdBuyeEmail =  params[0];
						detailJson.put("fdBuyeEmail", fdBuyeEmail);
						break;
					case "company": 
						fdBuyeUnit =  params[0];
						detailJson.put("fdBuyeUnit", fdBuyeUnit);
						break;
					
				}
				
				sessionJson.put("detail", detailJson);
				
				StringBuilder paramBuider = new StringBuilder(); 
				paramBuider.append("fdBuyeIP=" + fdBuyeIP);
				paramBuider.append("&fdBuyeName=" + fdBuyeName);
				paramBuider.append("&method=" + "Buyer.Update");
				paramBuider.append("&userUUID=" + C_My1InfoPopWindows.this.getSharedPreferences(Properties.LOGIN_INFO,0).getString(Properties.LoginInfo.USERUUID, ""));
				paramBuider.append("&fdBuyeUnit=" + fdBuyeUnit);
				paramBuider.append("&fdBuyeStatus=" + fdBuyeStatus);
				paramBuider.append("&fdBuyeEmail=" + fdBuyeEmail);
				paramBuider.append("&fdAutoId=" + fdAutoId);
				paramBuider.append("&fdBuyeId=" + fdBuyeId);
				paramBuider.append("&propStatusName=" + propStatusName);
				paramBuider.append("&fdBuyeMobile=" + fdBuyeMobile);
				paramBuider.append("&fdBuyeImage=" + fdBuyeImage);
				paramBuider.append("&fdBuyeAddress=" + fdBuyeAddress);
				
				String uri = "/api.ashx?"; 
				isRet = HttpManage.httpPost(C_My1InfoPopWindows.this.getApplicationContext(), 
						Properties.SERVER_URL_TEST + uri, paramBuider.toString(),null);
			} catch (Exception e) {
			}
			

			return isRet;
			
		}
		
		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			
			if (result == null) {

				Toast.makeText(C_My1InfoPopWindows.this, "修改失败,请稍后再试!", Toast.LENGTH_SHORT).show();
				return;
				
			} else {
			
				try {
					
					String errStr = new JSONObject(result).getString("error");
					String msg = new JSONObject(errStr).getString("err_msg");
					int code = Integer.parseInt( new JSONObject(errStr).getString("err_code") );
					
					if (code == 1 ) {
						
						//修改成功处理
						Toast.makeText(C_My1InfoPopWindows.this, msg, Toast.LENGTH_SHORT).show();
						getSharedPreferences(Properties.LOGIN_INFO, 0).edit().putString("o2OSetSession",sessionJson.toString()).commit();
						C_My1InfoPopWindows.this.finish();
						
					} else {
						
						Toast.makeText(C_My1InfoPopWindows.this, msg, Toast.LENGTH_SHORT).show();
						return;
						
					}
				} catch (Exception e) {
				}
				
			}
			
		}
		
	}
	
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值