天天看点

OkHttp参数拼接

@Override
public void get(String url, Map<String, String> map, final ICallBack iCallBack) {
    Log.e("aaa",map.size()+"");
    if (map!=null&&map.size()>0){
        StringBuffer sb=new StringBuffer(url);
        sb.append("?");
        Set<String> keys = map.keySet();
        for (String key:keys) {
            String s = map.get(key);
            sb.append(key).append("=").append(s).append("&");
        }
        url=sb.substring(0,sb.length()-1);
    }
    Log.e("url",url);
    Request build = new Request.Builder().url(url).build();
    Call call = okHttpClient.newCall(build);
    call.enqueue(new Callback() {
        @Override
        public void onFailure(Call call, IOException e) {
            iCallBack.fail("失败");
        }

        @Override
        public void onResponse(Call call, Response response) throws IOException {
            final String string = response.body().string();
            App.context.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    iCallBack.sucess(string);
                }
            });
        }




    });

}
        

BaseActivity

public  abstract class BaseActivity extends AppCompatActivity {

    private BaseFragment baseFragment;
    private BaseFragment lastFragment;
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        App.context=this;
        init();
        inData();
    }
    protected  abstract View getLayoutId();
    protected  abstract void init();
    protected  abstract void inData();

    public void changeFragment(int containerId,Class<? extends BaseFragment> fragmentclass,Bundle bundle,boolean isReplace,boolean isBack ){
        FragmentManager fragmentManager = getSupportFragmentManager();
        String canonicalName = fragmentclass.getSimpleName();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
       
        BaseFragment fragmentByTag = (BaseFragment) fragmentManager.findFragmentByTag(canonicalName);
       
        if (fragmentByTag==null){
            try {
                fragmentByTag = fragmentclass.newInstance();
                transaction.add(containerId,fragmentByTag,canonicalName);
            } catch (InstantiationException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        if (isReplace){
            Log.e("TAG","111111");
            transaction.replace(containerId,fragmentByTag,canonicalName);
        }else{
            if (lastFragment!=null){
                transaction.hide(lastFragment);
                transaction.show(fragmentByTag);
            }
        }
        if(bundle != null) {
            fragmentByTag.setParmas(bundle);

        }
        if (isBack){
            transaction.addToBackStack(canonicalName);
        }
        transaction.commit();
        lastFragment=fragmentByTag;
    }
}
      

BaseFragment

public abstract class BaseFragment extends Fragment {
    private Bundle parmas;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View layoutId = getLayoutId();

        return layoutId;
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        init();
        loadData();
    }

    /**
     * 用于加载Activity布局
     * @return
     */
    protected abstract View getLayoutId();
    /**
     * 统一管理数据的初始化
     */
    protected abstract void init();

    /**
     * 统一做数据加载
     */
    protected abstract void loadData();


    /**
     * 当Fragment隐藏、显示时改方法会被调用
     * @param hidden 当Fragment被隐藏时为true
     */
    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if(hidden)
            onHide();
        else
            onShow();
    }

    /**
     * 当Fragment可见时调用  可以在该方法中可以做数据刷新的操作
     */
    protected void onShow(){};

    /**
     * 当Fragment不可见时调用  可以做一下资源释放的操作
     */
    protected void onHide(){};

    public Bundle getParmas() {
        return parmas;
    }

    public void setParmas(Bundle parmas) {
        this.parmas = parmas;
    }

}