Android Fragments - 添加进度条

时间:2014-01-23 20:52:45

标签: android android-fragments progressdialog

我是新来的。如果我以错误的方式提出问题或者我是否需要澄清这个问题,请告诉我。

我正在创建一个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();
}

} 我在线跟踪了几个教程,但我一直收到错误,说“构造函数进度对话框未定义”。我知道我需要某种上下文对象,但我对如何去做这件事感到迷茫。如果你们有任何关于我的帮助,我会非常感激。感谢

3 个答案:

答案 0 :(得分:0)

这是另一个显示如何设置进度对话框的问题。 Show ProgressDialog Android

答案 1 :(得分:0)

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

答案 2 :(得分:0)

您可以使用以下任何一种:

status = api.get_status(id)
author = status.author
retweeted_status_author = status.retweeted_status.author
quoted_status_author = status.quoted_status.author

ProgressDialog progress = new ProgressDialog(getContext());

或覆盖ProgressDialog progress = new ProgressDialog(getActivity()); 中的onAttach方法并使用上下文:

Fragment

然后在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

这将确保每当Fragment附加到Activity时,只会初始化上下文。直接使用ProgressDialog progress = new ProgressDialog(context); getContext()有时可以创建getActivity()