안드로이드 개발 질문/답변
(글 수 45,052)
public class SerchMain extends ListActivity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.search_main); SearchThread tSearchThread = new SearchThread( this ); tSearchThread.start(); } public void ViewSearchingDialog(){ Log.d("SerchMain", "onCreateDialog CALL"); dlg = onCreateDialog(ID_PROGRESS_BAR); Log.d("SerchMain", "onCreateDialog CALL End"); dlg.show(); }
protected Dialog onCreateDialog(int id) { ProgressDialog dlgProgress = new ProgressDialog(this); if(id == ID_PROGRESS_BAR){ dlgProgress.setMessage("Loading..."); dlgProgress.setIndeterminate(true); dlgProgress.setProgressStyle(ProgressDialog.STYLE_SPINNER); dlgProgress.setCancelable(false); } return dlgProgress; } } public class SearchThread extends Thread { public SerchMain m_SerchMain = null; public SearchThread( SerchMain cSerchMain ){ this.m_SerchMain = cSerchMain; } public void run(){ //dialog start Log.d("SearchThread","SearchThread Start!!"); Log.d("SearchThread","SearchThread ViewSearchingDialog CALL!!"); this.m_SerchMain.ViewSearchingDialog(); Log.d("SearchThread","SearchThread ViewSearchingDialog CALL END!!"); Log.d("SearchThread","SearchThread End!!"); try{ Thread.sleep(5000); }catch(Exception e){ } } }
위의 코드에서 액티비티 생성시 Thread를 띄웠습니다. 그리고 Thread의 run에서 부모 class의 dialog를 생성하는 코드를 실행했는데요 dialog생성시에 runtime exception이 나네요
04-18 07:38:28.936: ERROR/AndroidRuntime(744): Uncaught handler: thread Thread-8 exiting due to uncaught exception
04-18 07:38:28.936: ERROR/AndroidRuntime(744): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at android.os.Handler.<init>(Handler.java:121)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at android.app.Dialog.<init>(Dialog.java:105)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at android.app.AlertDialog.<init>(AlertDialog.java:63)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at android.app.ProgressDialog.<init>(ProgressDialog.java:80)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at android.app.ProgressDialog.<init>(ProgressDialog.java:76)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at com.btb.solution.baha.sarch.SerchMain.onCreateDialog(SerchMain.java:174)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at com.btb.solution.baha.sarch.SerchMain.ViewSearchingDialog(SerchMain.java:166)
04-18 07:38:28.936: ERROR/AndroidRuntime(744): at com.btb.solution.baha.sarch.SearchThread.run(SearchThread.java:18)