2014-01-23 2 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 무시하고 상황에 맞는 사용하십시오 onCreateView 방법 다음

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. 
} 

을 , 문맥을 사용하십시오 :

ProgressDialog progress = new ProgressDialog(context); 

이렇게하면 조각이 활동에 첨부 될 때마다 컨텍스트 만 초기화됩니다. getContext() 또는 getActivity()을 직접 사용하면 NullPointerException을 직접 생성 할 수 있습니다.