Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/189.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么在“进度”对话框运行时,我必须单击“上一步”按钮两次才能到达上一个活动?_Android_Progressdialog - Fatal编程技术网

Android 为什么在“进度”对话框运行时,我必须单击“上一步”按钮两次才能到达上一个活动?

Android 为什么在“进度”对话框运行时,我必须单击“上一步”按钮两次才能到达上一个活动?,android,progressdialog,Android,Progressdialog,我希望当用户想在对话框运行时返回到上一个活动时,应该是单击(如youtube)。在我的情况下,在第一次按back时,单击进度对话框停止并显示一个空白页,直到我的数据没有加载,在第二次按back时,它被带到上一个活动 我不想这两次回按它将是非常恼人的用户使用该应用程序 有什么解决办法,因为我看起来像是另一个问题,但它不符合我的要求 我在对话框中使用了以下代码: progressDialog = new ProgressDialog(NextActivity.this ); prog

我希望当用户想在对话框运行时返回到上一个活动时,应该是单击(如youtube)。在我的情况下,在第一次按back时,单击进度对话框停止并显示一个空白页,直到我的数据没有加载,在第二次按back时,它被带到上一个活动

我不想这两次回按它将是非常恼人的用户使用该应用程序

有什么解决办法,因为我看起来像是另一个问题,但它不符合我的要求

我在对话框中使用了以下代码:

    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();
}
@覆盖
创建时受保护的void(@Nullable Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.nextwhat和roid_布局);
progressDialog=新建progressDialog(NextActivity.this);
progressDialog.setMessage(“加载…”);
progressDialog.show();
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.setProgressStyle(progressDialog.STYLE_微调器);
//progressDialog.setCancelable(真);
progressDialog.setOnDismissListener(新的DialogInterface.OnDismissListener(){
@凌驾
公共void onDismiss(对话框接口对话框){
//在这里,关闭对话框并完成活动
progressDialog.disclose();
完成();
}
});
Toolbar Toolbar=(Toolbar)findviewbyd(R.id.Toolbar);
设置支持操作栏(工具栏);
如果(getSupportActionBar()!=null){
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
}
Intent=getIntent();
字符串标题=intent.getStringExtra(“标题”);
字符串hello=intent.getStringExtra(“hii”);
String id=intent.getStringExtra(“id”);
Log.e(“ashwini”,String.valueOf(id));
getSupportActionBar().setTitle(标题);
/*为实例接口创建句柄*/
DescriptService service=DescriptClientInstance.GetRefughtInstance().create(DescriptService.class);
Call Call=service.getAllPhotos(id);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
progressDialog.disclose();
DescriptList=response.body();
生成论者(描述论者);
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
progressDialog.disclose();
Toast.makeText(getApplicationContext(),“出现问题…请稍后再试!”,Toast.LENGTH\u SHORT.show();
}
});
}
私有void generateDataList(描述模型照片列表){
recyclerView=findViewById(R.id.RecyclerNext);
LinearLayoutManager=newlinearlayoutmanager(getApplicationContext());
recyclerView.setLayoutManager(管理器);
recyclerView.setHasFixedSize(true);
adapter=new-nextandroidapter(getApplicationContext(),photoList);
recyclerView.setAdapter(适配器);
}
@凌驾
公共布尔值OnOptionItemSelected(@NonNull MenuItem item){
if(item.getItemId()==android.R.id.home){
完成();
}
返回super.onOptionsItemSelected(项目);
}
@凌驾
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();

我把这个叫做哪里?因为我把这个back pressed()方法放在了后面,但情况仍然是一样的,所以在“progressDialog.show();”之后写,并使cancelable为true,您可以检查编辑过的答案。我认为不需要“progressDialog.SetCanceledOnTouchOut(false);”这在我单击要加载的活动时不起作用。它会在2秒钟后自动关闭,即使我没有按“上一步”按钮提示对话框代码并复制我编辑的答案。我已经试过了,而且成功了。您在哪里显示对话框?在onCreate或其他地方?请参阅上面的完整代码…当我单击要加载的活动时..它会在2秒钟后自动消失,即使我没有按“后退”按钮您可以共享代码中出现问题的图像或屏幕吗?progressDialog.show();-为什么要添加这行两次?@akanshirisvastava..如果我不显示“进度”对话框,它将显示一个空白,直到加载我的数据..这将给用户带来不便..进度对话框是must@Wini我理解显示流程对话框的重要性,但为什么要调用show()呢方法两次?嘿,我评论了一个…不是两个即时消息显示…只有一次即时消息显示…@Akanshistrivastava