Android碎片 - 添加进度条

4

我是新来的。如果我的提问方式有误或需要更多解释,请告诉我。

我正在创建一个Android应用程序,我的代码中使用了片段(即可以滑动的4个选项卡)。我想添加一个条形图以显示用户使用情况的百分比。我认为最好的选择是进度条,但我似乎无法使其工作。

这是我要添加进度条的片段的代码:

import android.app.ProgressDialog;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class UserFragment extends Fragment {

    private ProgressDialog progress;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_calls, container, false);

    progress = new ProgressDialog(this);
    return rootView;
}

public void open(View view){
      progress.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
      progress.setIndeterminate(true);
      progress.show();

       final int totalProgressTime = 100;

       final Thread t = new Thread(){

       @Override
       public void run(){

          int jumpTime = 0;
          while(jumpTime < totalProgressTime){
             try {
                sleep(200);
                jumpTime += 5;
                progress.setProgress(jumpTime);
             } catch (InterruptedException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
             }

          }

       }
       };
       t.start();
}

我按照一些在线教程进行操作,但是一直出现“进度对话框构造函数未定义”的错误。我知道我需要某种上下文对象,但我不知道如何做到这一点。如果你们中的任何人能帮我解决这个问题,我将非常感激。谢谢


你在哪里设置进度条?你发布的代码中没有进度条代码。 - AlexBrand
抱歉,我尝试添加进度条但失败了,所以我将其删除并放上了我尝试添加进度条的代码,以防我错了。现在我已经更改了代码,并加入了我尝试添加的进度条(这只是一个示例;不要在意使用的时间或此进度条正在做什么),我也解释了错误。 - BrianMac21
3个回答

0

0
如果您需要在片段内获取上下文对象,可以使用getActivity()方法,该方法返回与片段关联的活动。如果您已经拥有了活动,则拥有了上下文,因为Activity扩展了Context

0

你可以使用其中任何一个:

ProgressDialog progress = new ProgressDialog(getContext());

或者

ProgressDialog progress = new ProgressDialog(getActivity());

或者在你的Fragment中重写onAttach方法并使用上下文:

private Context context;
@Override
public void onAttach(Context context) {
   super.onAttach(context);
   this.context = context; //when fragment is created, context will be initialised for use.
}

然后在onCreateView方法中,使用上下文:

ProgressDialog progress = new ProgressDialog(context);

这将确保每当片段附加到活动时,只有上下文才会初始化。直接使用getContext()getActivity()有时可能会创建NullPointerException


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接