2014-01-23 69 views
4

我是新來的。如果我以錯誤的方式提出問題或需要更多地澄清這一點,請告訴我。Android碎片 - 添加進度條

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

} 我跟着一對夫婦教程在線,但我一直得到錯誤說「構造進度對話框未定義」。我明白我需要某種上下文對象,但我在如何去做這件事上迷失了方向。如果你們中的任何人都可以幫助我,我會非常感激。謝謝

+0

你在哪裏設置進度條?在您發佈的代碼中沒有任何進度條碼 – AlexBrand

+0

對不起,我嘗試添加一個進度條,但它不起作用,因此我刪除了它並放置了代碼,我試圖添加該條以防止出錯。我現在用我正在添加的進度條更改了代碼(這只是一個示例;不介意使用的時間或此欄的功能),並解釋了錯誤 – BrianMac21

回答

0

如果您需要在片段中獲取上下文對象,可以使用getActivity()方法,該方法返回與片段關聯的活動。如果您已獲得活動,則獲得上下文,因爲活動擴展了上下文

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); 

這將確保每當Fragment被附加到Activity時,只有上下文將被初始化。直接使用getContext()getActivity()有時可以創建NullPointerException