为什么在进度对话框 运行 时我必须单击后退按钮两次才能到达上一个 activity?
why do I have to click twice on back button to reach previous activity when progress dialog running?
我想要当用户想要返回上一个 activity 而对话框是 运行 时,它应该是单击(如 youtube)。在我的情况下,在第一次返回时按下点击进度对话框停止并显示空白页,直到我的数据未加载,然后在第二次返回时按它然后转到上一个 activity ....
我不希望按两次后退键,这会让用户在使用应用程序时感到非常恼火。
有什么解决办法吗,因为我看了其他问题,但它不符合我的要求....
我将以下代码用于对话框:
progressDialog = new ProgressDialog(NextActivity.this );
progressDialog.setMessage("Loading....");
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(false);
完整代码:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nextwhatsandroid_layout);
progressDialog = new ProgressDialog(NextActivity.this );
progressDialog.setMessage("Loading....");
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// progressDialog.setCancelable(true);
progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//here, dismiss your dialog and finish your activity too
progressDialog.dismiss();
finish();
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id. toolbar );
setSupportActionBar( toolbar );
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Intent intent = getIntent();
String title = intent.getStringExtra("title");
String hello=intent.getStringExtra("hii");
String id = intent.getStringExtra("id");
Log.e("ashwini", String.valueOf(id));
getSupportActionBar().setTitle(title);
/*Create handle for the RetrofitInstance interface*/
DescriptService service = DescriptClientInstance.getRetrofitInstance().create(DescriptService.class);
Call<DescriptionModel> call = service.getAllPhotos(id);
call.enqueue(new Callback<DescriptionModel>() {
@Override
public void onResponse(Call<DescriptionModel> call, Response<DescriptionModel> response) {
progressDialog.dismiss();
DescriptList=response.body();
generateDataList(DescriptList);
}
@Override
public void onFailure(Call<DescriptionModel> call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
}
});
}
private void generateDataList(DescriptionModel photoList) {
recyclerView = findViewById(R.id.recyclenext);
LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
adapter = new NextAndroidAdapter(getApplicationContext(),photoList);
recyclerView.setAdapter(adapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() ==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
需要帮助..提前致谢...
你可以这样试试
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setOnKeyListener(new ProgressDialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
progressDialog.dismiss();
}
return true;
}
});
请使用对话框创建加载程序。后退动作将被冻结,直到对话框关闭。后面的动作会很完美。
Dialog dialog = new Dialog(context);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(context.getResources().getString(R.string.title))
.setIcon(R.drawable.icon)
.setCancelable(false);
LayoutInflater inflater = LayoutInflater.from(context);
View dialogView = inflater.inflate(R.layout.dialog_view, null);
builder.setView(dialogView);
dialog = builder.create();
dialog.show();
api 响应后。使用以下代码行关闭对话框
dialog.dismiss();
我想要当用户想要返回上一个 activity 而对话框是 运行 时,它应该是单击(如 youtube)。在我的情况下,在第一次返回时按下点击进度对话框停止并显示空白页,直到我的数据未加载,然后在第二次返回时按它然后转到上一个 activity ....
我不希望按两次后退键,这会让用户在使用应用程序时感到非常恼火。
有什么解决办法吗,因为我看了其他问题,但它不符合我的要求....
我将以下代码用于对话框:
progressDialog = new ProgressDialog(NextActivity.this );
progressDialog.setMessage("Loading....");
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(false);
完整代码:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.nextwhatsandroid_layout);
progressDialog = new ProgressDialog(NextActivity.this );
progressDialog.setMessage("Loading....");
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
// progressDialog.setCancelable(true);
progressDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialog) {
//here, dismiss your dialog and finish your activity too
progressDialog.dismiss();
finish();
}
});
Toolbar toolbar = (Toolbar) findViewById(R.id. toolbar );
setSupportActionBar( toolbar );
if (getSupportActionBar() != null) {
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Intent intent = getIntent();
String title = intent.getStringExtra("title");
String hello=intent.getStringExtra("hii");
String id = intent.getStringExtra("id");
Log.e("ashwini", String.valueOf(id));
getSupportActionBar().setTitle(title);
/*Create handle for the RetrofitInstance interface*/
DescriptService service = DescriptClientInstance.getRetrofitInstance().create(DescriptService.class);
Call<DescriptionModel> call = service.getAllPhotos(id);
call.enqueue(new Callback<DescriptionModel>() {
@Override
public void onResponse(Call<DescriptionModel> call, Response<DescriptionModel> response) {
progressDialog.dismiss();
DescriptList=response.body();
generateDataList(DescriptList);
}
@Override
public void onFailure(Call<DescriptionModel> call, Throwable t) {
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Something went wrong...Please try later!", Toast.LENGTH_SHORT).show();
}
});
}
private void generateDataList(DescriptionModel photoList) {
recyclerView = findViewById(R.id.recyclenext);
LinearLayoutManager manager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(manager);
recyclerView.setHasFixedSize(true);
adapter = new NextAndroidAdapter(getApplicationContext(),photoList);
recyclerView.setAdapter(adapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() ==android.R.id.home) {
finish();
}
return super.onOptionsItemSelected(item);
}
@Override
public void onBackPressed() {
super.onBackPressed();
}
需要帮助..提前致谢...
你可以这样试试
ProgressDialog progressDialog = new ProgressDialog(this);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setOnKeyListener(new ProgressDialog.OnKeyListener() {
@Override
public boolean onKey(DialogInterface arg0, int keyCode,
KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
progressDialog.dismiss();
}
return true;
}
});
请使用对话框创建加载程序。后退动作将被冻结,直到对话框关闭。后面的动作会很完美。
Dialog dialog = new Dialog(context);
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(context.getResources().getString(R.string.title))
.setIcon(R.drawable.icon)
.setCancelable(false);
LayoutInflater inflater = LayoutInflater.from(context);
View dialogView = inflater.inflate(R.layout.dialog_view, null);
builder.setView(dialogView);
dialog = builder.create();
dialog.show();
api 响应后。使用以下代码行关闭对话框
dialog.dismiss();