2012-03-20 4 views
0

"Main"액티비티의 시작 부분에서 로딩을 표시하는 방법을 찾지 만이 액티비티를 호출해야합니다"Main"액티비티의 시작 부분에 ProgressDialog를 사용하는 경우 여러 함수가 있습니다.

FATAL EXCEPTION: Thread-99 
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
at android.os.Handler.<init>(Handler.java:121) 
at android.widget.Toast$TN.<init>(Toast.java:317) 
at android.widget.Toast.<init>(Toast.java:91) 
at android.widget.Toast.makeText(Toast.java:233) 
at com.main.Main.msgbox(Main.java:519) 
at com.main.Main.updateWithNewLocation(Main.java:148) 
at com.main.Main.initLocalisation(Main.java:204) 
at com.main.Main$4.run(Main.java:172) 
at java.lang.Thread.run(Thread.java:856) 

답변

0

당신은 비 UI 스레드에서 UI에 액세스 할 수 없습니다 : 사실

ProgressDialog bar; 

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     loading(); 
} 


private void loading() { 
      bar = ProgressDialog.show(this, "Please wait", 
        "Long operation starts...", true); 

      new Thread((new Runnable() { 
       @Override 
       public void run() { 
        bar.setMessage("Loading..."); 
        initLocalisation(); 
         initTabhost(); 
       } 
      })).start(); 
    } 

public void msgbox(String str) { 
     Toast.makeText(this, str, Toast.LENGTH_SHORT).show(); 
    } 

이 나에게 다음과 같은 오류를 보여줍니다 일부 기능은 그래서 나는이 코드를 사용했다. Painless Threading이라는이 문서를 읽어야합니다.

관련 문제