android - ProgressBar 没有停止
问题描述
我的应用程序包含一个登录按钮,每当按下该按钮时,我都希望显示一些进度条,以便用户知道发生了什么事。我在 XML 中有进度条,但现在我不知道如何在代码中设置它。请指导我在哪里放置行,就像我按下登录按钮时显示的进度条一样,这是我的代码
<ProgressBar
android:id="@+id/loading"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/layout_password"
android:layout_marginTop="30dp"
android:visibility="gone"/>
<Button
android:id="@+id/login"
android:layout_width="match_parent"
android:layout_height="55dp"
android:text="login"
android:layout_below="@id/layout_password"
android:layout_marginTop="30dp"/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
TextView textView;
EditText email,password;
Button login;
String url="http://192.168.1.5/Register/login.php" ;
AlertDialog.Builder builder;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=findViewById(R.id.register);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Register.class);
startActivity(intent);
}
});
email=findViewById(R.id.email);
password=findViewById(R.id.password);
login=findViewById(R.id.login);
builder=new AlertDialog.Builder(MainActivity.this);
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String user_email=email.getText().toString();
final String user_password=password.getText().toString();
if (user_email.equals("")||user_password.equals("")){
builder.setTitle("Something Went Wrong...");
dispalyAlert("Enter a valid Email and Password");
}
else {
StringRequest stringRequest=new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray=new JSONArray(response);
JSONObject jsonObject=jsonArray.getJSONObject(0);
String code=jsonObject.getString("code");
if (code.equals("login_failed")){
builder.setTitle("Login Error...");
dispalyAlert(jsonObject.getString("message"));
}
else {
Intent intent=new Intent(MainActivity.this,LoginSuccess.class);
Bundle bundle=new Bundle();
bundle.putString("name",jsonObject.getString("name"));
// bundle.putString("email",jsonObject.getString("email"));
intent.putExtras(bundle);
startActivity(intent);
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this,"Error",Toast.LENGTH_LONG).show();
error.printStackTrace();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params=new HashMap<>();
params.put("email",user_email);
params.put("password",user_password);
return params;
}
};
MySingleton.getInstance(MainActivity.this).addToRequestQueue(stringRequest);
}
}
});
}
private void dispalyAlert(String message){
builder.setMessage(message);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
email.setText("");
password.setText("");
}
});
AlertDialog alertDialog=builder.create();
alertDialog.show();
}
解决方案
当用户单击按钮时,您应该设置进度条可见:
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String user_email=email.getText().toString();
final String user_password=password.getText().toString();
if (user_email.equals("")||user_password.equals("")){
builder.setTitle("Something Went Wrong...");
dispalyAlert("Enter a valid Email and Password");
}else{ //Right here
findViewById(R.id.loading).setVisible(View.VISIBLE);
您必须在停止加载时将可见性设置为消失:
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray=new JSONArray(response);
JSONObject jsonObject=jsonArray.getJSONObject(0);
String code=jsonObject.getString("code");
if (code.equals("login_failed")){
builder.setTitle("Login Error...");
dispalyAlert(jsonObject.getString("message"));
}
else {
Intent intent=new Intent(MainActivity.this,LoginSuccess.class);
Bundle bundle=new Bundle();
bundle.putString("name",jsonObject.getString("name"));
// bundle.putString("email",jsonObject.getString("email"));
intent.putExtras(bundle);
startActivity(intent);
}
} catch (JSONException e) {
e.printStackTrace();
}
findViewById(R.id.loading).setVisible(View.GONE); ////Here
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
findViewById(R.id.loading).setVisible(View.GONE); //Here
Toast.makeText(MainActivity.this,"Error",Toast.LENGTH_LONG).show();
error.printStackTrace();
}
推荐阅读
- ios - ios11.4升级后没有调用Locationmanager didEnterRegion
- java - 带有语言和地区的 REST API 请求
- oracle - 无法使用 Oracle SQL 开发人员导入 txt 文件
- curl - Dom 从 curl 响应中获取子节点
- c++ - 导入机器人机械臂(6 轴)的连接部件并通过用户输入使每个关节旋转(C++ 代码)
- css - 在 FlatList 中使用溢出
- angular - Angular 6 - Google 登录 - 使用 SocialLoginModule 刷新令牌
- webpack - 如何使用 .env 文件来设置/配置 Webpack 配置
- android - 数据绑定库 - 通过变量设置 ID
标签 - flutter - 部分屏幕的颤振导航