day 19 第三周周总结
今天本来想实现一个顶部导航栏的点击事件遇到了一个关于menu的坑,弄了小半天。
本来是想实现点击几个小图标实现界面跳转,但是我不知道这个点击事件怎么搞,按照我学习按钮的点击事件,首先我得先findViewById(R.id.?),但是布局文件里没有描述这个按键,它的引入是通过tool.inflateMenu(R.menu.menu_car);然后我去搜menu的点击事件的实现方法 都是改写这两个方法
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu,menu); return true; }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()){ case R.id.action_kefu: Toast.makeText(mcontext,"已经添加到购物车了,快去看看吧!",Toast.LENGTH_SHORT).show(); break; case R.id.action_fenxiang: Toast.makeText(mcontext,"快去看看吧!",Toast.LENGTH_SHORT).show(); break; default: break; } return true; }
但是我的Fragment没有这个getMenuInflater()方法,行不通他是要在Activity中能用的,我这不能用。
然后我还是想从set一个点击事件解决终于让我瞎猫碰到死耗子了Toolbar 的实例tool就以充当对象
tool.inflateMenu(R.menu.menu_car); tool.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.action_kefu: Toast.makeText(mcontext,"客服!",Toast.LENGTH_SHORT).show(); break; case R.id.action_fenxiang: Toast.makeText(mcontext,"分享!",Toast.LENGTH_SHORT).show(); break; default: break; } return false; } });
本周还是继续完成我的android app随手快递项目, 首先把上周未完成的登录注册功能继续完成。
1、首先对json数据解析的简单学习
package com.example.jsonparsetest; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.TextView; import com.example.jsonparsetest.bean.City; import com.example.jsonparsetest.bean.Province; import com.example.jsonparsetest.utils.FileUtils; import com.google.gson.Gson; public class MainActivity extends Activity { private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.content); } /**android自带的JSON解析*/ public void btn1Click(View view) { String json = FileUtils.getJSONStringFromFile(this); if(!TextUtils.isEmpty(json)){ try { //将JSON字符串转化为JSON对象 JSONObject obj = new JSONObject(json); Province province = new Province(); //通过opt...方法,获取键对应的值 province.setId(obj.optInt("id")); province.setName(obj.optString("name")); //得到一个JSON数组,数组里装的city的JSON数据 JSONArray arr = obj.optJSONArray("cityList"); if(arr != null && arr.length() > 0){ List<City> cityList = new ArrayList<City>(); //遍历JSON数组得到其中的city数据 for(int i = 0; i < arr.length(); i++){ JSONObject jobj = arr.getJSONObject(i); City city = new City(); city.setId(jobj.optInt("id")); city.setName(jobj.optString("name")); cityList.add(city); } province.setCityList(cityList); } //把Province对象转化为String显示出来,注意这里的Province和City对象都必须复写了toString方法 textView.append("使用Android自带的JSON解析,得出的结果为:\n" + province.toString()); textView.append("\n----------------\n"); } catch (Exception e) { e.printStackTrace(); } } } /**Google的gson解析*/ public void btn2Click(View view) { String json = FileUtils.getJSONStringFromFile(this); if(!TextUtils.isEmpty(json)){ //新建一个Gson对象 Gson gson = new Gson(); //fromJson方法可以把一个json字符串直接转化为对应的对象 Province province = gson.fromJson(json, Province.class); textView.append("使用Google的GSON解析,得出的结果为:\n" + province.toString()); textView.append("\n----------------\n"); } } public void btn3Click(View view) { String json = FileUtils.getJSONStringFromFile(this); if(!TextUtils.isEmpty(json)){ //parseObject方法和上面的fromJson方法类似,也可以直接将一个json字符串转化为对应的对象 Province pro = com.alibaba.fastjson.JSON.parseObject(json, Province.class); textView.append("结果为:\n" + pro.toString()); textView.append("\n----------------\n"); } } }
2、Android客户端与服务器端的json数据交互 自定义封装一个httpUtil