点击购物车支付按钮
mBtnAmount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (data.size() == 0){//也可以价格==null
Toast.makeText(getActivity(), "您的购物车中还没有商品,请先去挑选商品吧", Toast.LENGTH_SHORT).show();
}else {
Intent intent = new Intent(getActivity(), CreateOrder.class);
SharedPreferences car = getActivity().getSharedPreferences("Car", 0);
SharedPreferences.Editor edit = car.edit();
//回传 总价
Toast.makeText(getActivity(), "totalPrice:" + totalPrice, Toast.LENGTH_SHORT).show();
edit.putString("sumPrice",totalPrice+"");
edit.commit();
startActivity(intent);
getActivity().finish();
}
}
});
跳转到新的页面
CreaterOrder
先出示布局文件
RelativeLayout
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal">
<TextView
android:id="@+id/order_totalPrice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="5"
android:gravity="center"
android:text="总价为:"
android:textSize="25sp" />
<Button
android:id="@+id/order_btnSum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="立即下单" />
</LinearLayout>
<Button
android:text="返回"
android:id="@+id/order_return"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
avtivity.java
public class CreateOrder extends AppCompatActivity implements View.OnClickListener,ICreateOrderView {
/**
* 总价为:
*/
private TextView mOrderTotalPrice;
/**
* 立即下单
*/
private Button mOrderBtnSum;
private Button order_return;
private String sumPrice;
private IParesenter iParesenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_create_order);
iParesenter = new CreateOrderParesenter(this);
initView();
SharedPreferences car = getSharedPreferences("Car", 0);
sumPrice = car.getString("sumPrice", "");
mOrderTotalPrice.setText("订单总价为:¥:" + sumPrice + "元");
}
private void initView() {
mOrderTotalPrice = (TextView) findViewById(R.id.order_totalPrice);
mOrderBtnSum = (Button) findViewById(R.id.order_btnSum);
order_return = findViewById(R.id.order_return);
mOrderBtnSum.setOnClickListener(this);
order_return.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.order_btnSum:
SharedPreferences log = getSharedPreferences("LOG", Activity.MODE_PRIVATE);
String uid = log.getString("uid", "");
String token = log.getString("token", "");
iParesenter.getJson(Constans.CREATEORDER + "?uid=" + uid + "&price=" + sumPrice + "&token=" + token);
break;
case R.id.order_return:
Intent returns = new Intent(this,JD.class);
startActivity(returns);
finish();
break;
}
}
@Override
public void createSuccess(String result) {
Toast.makeText(this, result, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,MyDD.class);//提交订单,跳转到订单页面
startActivity(intent);
finish();
}
@Override
public void createFailed(String msg) {
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this,**.class);//返回购物车页面
startActivity(intent);
finish();
}
@Override
protected void onDestroy() {
super.onDestroy();
iParesenter.destroy();
}
}
public interface ICreateOrderView {
void createSuccess(String result);
void createFailed(String msg);
}
CreateOrderParesenter
public class CreateOrderParesenter implements IParesenter {
private IMoudle iMoudle;
private ICreateOrderView iCreateOrderView;
public CreateOrderParesenter(ICreateOrderView iCreateOrderView) {
this.iCreateOrderView = iCreateOrderView;
iMoudle = new OkMoudle();
}
@Override
public void getJson(String path) {
iMoudle.getJson(path, this);
}
@Override
public void getJsonSuccess(String result) {
Gson gson = new Gson();
UpUser upUser = gson.fromJson(result, UpUser.class);
if (upUser.getCode().equals("0")) {
iCreateOrderView.createSuccess(upUser.getMsg());
} else {
iCreateOrderView.createFailed(upUser.getMsg());
}
}
@Override
public void getJsonFailed(String msg) {
iCreateOrderView.createFailed("连接服务器失败");
}
@Override
public void destroy() {
if (iCreateOrderView != null) {
iCreateOrderView = null;
}
}
}
public class UpUser {
/**
* msg : 昵称修改成功
* code : 0
*/
private String msg;
private String code;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
public interface ICreateOrderView {
void createSuccess(String result);
void createFailed(String msg);
}
public interface IMoudle {
void getJson(String path, IParesenter iParesenter);
}
public class OkMoudle implements IMoudle,OnFinishListener {
private IParesenter iParesenter;
@Override
public void getJson(String path, IParesenter iParesenter) {
this.iParesenter = iParesenter;
OkUntil okUntil = OkUntil.getInstance();//通过单例模式获取一个OK请求对象
okUntil.doGet(path,this);//通过get方法获取请求数据
}
@Override
public void onFailed(String msg) {
iParesenter.getJsonFailed(msg);
}
@Override
public void onSuccess(String result) {
iParesenter.getJsonSuccess(result);
}
}
public interface OnFinishListener {
void onFailed(String msg);
void onSuccess(String result);
}
public interface IParesenter {
void getJson(String path);
void getJsonSuccess(String result);
void getJsonFailed(String msg);
void destroy();
}
public class OkUntil {
private static OkUntil okUntil = null;
private Handler handler = new Handler();
private OkUntil() {
}
/**
* 得到OkHttpUtils实例对象
* @return
*/
public static OkUntil getInstance(){
if(null == okUntil){
synchronized (OkUntil.class){
if(null == okUntil){
okUntil = new OkUntil();
}
}
}
return okUntil;
}
/**
* Get请求
* @param path
* @param onFinishListener
*/
public void doGet(String path, final OnFinishListener onFinishListener){
//Http:/www.baidu.com?key=ddd&
OkHttpClient okHttpClient = new OkHttpClient.Builder()
.addInterceptor(new CommonParamsInterceptor())
.build();
//构建请求项
Request request = new Request.Builder()
.get()
.url(path)
.build();
Call call = okHttpClient.newCall(request);
//execute 子线程 enqueue //
call.enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
//请求失败
handler.post(new Runnable() {
@Override
public void run() {
onFinishListener.onFailed(e.getMessage());
}
});
}
@Override
public void onResponse(Call call, Response response) throws IOException {
//得到服务器的响应结果
final String result = response.body().string();
//请求成功
handler.post(new Runnable() {
@Override
public void run() {
//主线程当中执行
onFinishListener.onSuccess(result);
}
});
}
});
}
}
public class CommonParamsInterceptor implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
//得到原始的请求对象
Request request = chain.request();
//得到用户所使用的请求方式
String method = request.method();
if("GET".equals(method)){
//url
//原始的请求接口
String oldUrl = request.url().toString();
//拼接成一个新的URL
String newUrl = oldUrl + "&source=android";
//重新构建请求体
request = new Request.Builder()
.url(newUrl)
.build();
}else if("POST".equals(method)){
//得到原始的url
String oldUrl = request.url().toString();
//得到原有的请求参数
FormBody oldBody = (FormBody) request.body();//1 2 3
//新的构建项
FormBody.Builder builder = new FormBody.Builder();
for (int i =0 ; i < oldBody.size(); ++i){
//取出相关请求参数(原有的)
String name = oldBody.name(i);
String value = oldBody.value(i);
//将原始的参数拼装到新的构建体当中
builder.add(name,value);
}
//拼装我们的公共参数
builder.add("source","android");
request = new Request.Builder()
.url(oldUrl)
.post(builder.build())
.build();
}
//重新发送请求
return chain.proceed(request);
}
}