关于涉及到AlertDialog设置一个EditText,并使用OkHttp上传数据,直接见下面代码,我注释写得比较细致了,欢迎留言交流:
// 首先添加一个Edit实例,然后通过Alertdialog显示提示用户
final EditText editText_limit = new EditText(MainActivity.this);
// 这里使用设置hint,提示用户
editText_limit.setHint("功率(W)设置范围:100~2000");
// 实例化一个Alertdialog
AlertDialog.Builder alertDialog_limit = new AlertDialog.Builder(MainActivity.this);
alertDialog_limit.setTitle("修改设备功率");
alertDialog_limit.setView(editText_limit);
alertDialog_limit.setCancelable(false);
// 设置取消按钮(摆在最右边)
alertDialog_limit.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 无操作,空白
}
});
// 设置确定按钮
alertDialog_limit.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// 这里将文本框中的字符串转换成了我想要的FLoat类型
Float status_limit = Float.parseFloat(editText_limit.getText().toString());
OkHttpClient okHttpClient_limit = new OkHttpClient();
// 创建数据对象,这里的DataGson是我自己写的数据对象类
DataGson postData_limit = new DataGson();
// 设置status = 3,表示修改功率请求
postData_limit.setStatus(3);
// 设置新功率
postData_limit.setPower(status_limit);
// 下面就将使用Gson上传数据(重点)
Gson gson_limit = new Gson();
// 使用Gson将数据对象转换为json字符串
String jsonData_limit = gson_limit.toJson(postData_limit);
// MediaType 设置Content-Type 标头中包含的媒体类型值
RequestBody requestBody_limit = FormBody.create(MediaType.parse("application/json; charset=utf-8"), jsonData_limit);
// 构建网络请求对象
Request request_limit = new Request.Builder()
.url("填你自己的url")
.post(requestBody_limit)
.build();
okHttpClient_limit.newCall(request_limit).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// 要想在子线程中弹出Toast,需要为子线程开启一个消息循环
Looper.prepare();
// 这里我使用了FancyToast,当作Toast处理
FancyToast.makeText(MainActivity.this, "与服务器失去连接......请求失败!", FancyToast.LENGTH_LONG, FancyToast.ERROR, true).show();
Looper.loop();
}
// 打印服务器返回的信息
@Override
public void onResponse(Call call, Response response) throws IOException {
Looper.prepare();
FancyToast.makeText(MainActivity.this, response.body().string(), FancyToast.LENGTH_LONG, FancyToast.INFO, true).show();
Looper.loop();
}
});
}
});
// 显示对话框
alertDialog_limit.show();
文本框没有设置字体什么的,效果有点丑,可以自己设置一下