不推荐使用ProgressDialog

Alo*_*lok 11 android progressdialog android-8.0-oreo

由于ProgressDialog已从Android版本O弃用,我仍然找到了更好的方法来完成我的任务.任务是从我的活动转移到片段.一切都工作正常,但progressdialog不可见.我试过实现它但是... progressdialog不起作用.

似乎进度条可以工作但仍然不起作用.我需要一个progressdialog,因为我很容易设置我的标题和消息.我需要一个微调器progressDialog但不知道该怎么做.这是我的一项工作,但没有实施:

Java类

ublic class SaveVideo extends AppCompatActivity {

private Button button;

private ProgressDialog mProgressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_save_video);

    mProgressDialog = new ProgressDialog(this);

    getSupportActionBar().setHomeAsUpIndicator(R.drawable.back);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    button = (Button) findViewById(R.id.saveVideo);

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            //where it must be seen when the button is pressed
            mProgressDialog.setTitle("Title");
            mProgressDialog.setMessage("Message");
            mProgressDialog.show();

            Intent intent = new Intent(SaveVideo.this,MainActivity.class);
            intent.putExtra("change",2);
            startActivity(intent);

            //as soon as the page moves from this to another fragment
            mProgressDialog.dismiss();
        }
    });


}
Run Code Online (Sandbox Code Playgroud)

我是Android版O的新手.任何帮助都会给我新的东西学习!

Div*_*oni 14

正如在Android O文档中提到的那样:

此类在API级别26中已弃用.ProgressDialog是一个模式对话框,可防止用户与应用程序进行交互.您应该使用ProgressBar等进度指示器,而不是使用此类,可以将其嵌入到应用程序的UI中.或者,您可以使用通知来通知用户任务的进度.

您可以使用TextView和ProgressBar创建自定义视图并管理其可见性.您也可以使用此库,因为它使用的是AlertDialog而不是ProgressDialog.


Sye*_*eem 9

ProgressBar非常简单易用,第一步是您可以使要显示的对话框的xml布局,让我们命名此布局

layout_loading_dialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="20dp">
    <ProgressBar
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="4"
        android:gravity="center"
        android:text="Please wait! This may take a moment." />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

下一步是创建AlertDialog,它将使用ProgressBar显示此布局

AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setCancelable(false); // if you want user to wait for some process to finish,
builder.setView(R.layout.layout_loading_dialog);
AlertDialog dialog = builder.create();
Run Code Online (Sandbox Code Playgroud)

现在剩下的就是在这样的单击事件中显示和隐藏此对话框

progress_dialog.show(); // to show this dialog
progress_dialog.dismiss(); // to hide this dialog
Run Code Online (Sandbox Code Playgroud)

就是这样,它应该可以工作,如您所见,实现ProgressBar(例如ProgressDialog)而不是不推荐使用的ProgressDialog非常简单容易。现在,您可以在Handler或ASyncTask中显示/关闭此对话框,取决于您的需要,希望您可以使用它来解决问题,干杯


Gow*_*n M 5

是的,API level 26它已被弃用,最好只能使用progressbar

使用此代码片段以编程方式创建:

ProgressBar progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);
Run Code Online (Sandbox Code Playgroud)

仅供将来参考,将 更改android.R.attr.progressBarStyleSmallandroid.R.attr.progressBarStyleHorizontal

也许本指南可以帮助您。

我希望这可以帮助你。