Я создал Activity, после этого я создал поток, который читает из телефонной книги, выполняет некоторые манипуляции со строками и, основываясь на правилах, создает различные кнопки в главном пользовательском интерфейсе.
У меня есть код ниже, но некоторые из них, как приложение заканчивается.
Может кто-нибудь, пожалуйста, помогите мне.
public class Phone extends Activity {
/** Called when the activity is first created. */
ProgressDialog pbarDialog;
LinearLayout ll;
Button b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScrollView sv = new ScrollView(this);
ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
sv.addView(ll);
setContentView(sv);
pbarDialog = new ProgressDialog(this);
pbarDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pbarDialog.setMessage("Reading from Phone Book");
pbarDialog.setCancelable(false);
pbarDialog.show();
pbarDialog.incrementProgressBy(0);
new TheTask().execute();
}
private class TheTask extends AsyncTask<Void, Integer, Void>{
@Override
protected void onPreExecute() {
pbarDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
pbarDialog.setMessage("Reading from Phone Book");
pbarDialog.setCancelable(false);
pbarDialog.show();
pbarDialog.incrementProgressBy(0);
}
@Override
protected Void doInBackground(Void... params) {
ReadPhoneBook();
return null;
}
@Override
protected void onPostExecute(Void result) {
pbarDialog.dismiss();
}
}
private void ReadPhoneBook() {
int i=0;
int count=0;
//this is a temp function, it just creates buttons, does not read the phone book.
for (i=0;i<10;i++)
{
b = new Button(this);
b.setText("Testing");
b.setId(1);
final Activity self = this;
b.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
initiateACall(v,self);
}
});
ll.addView(b);
if (i%3 == 0){
pbarDialog.incrementProgressBy(30*i/3);
}
}
}
Я получаю следующую ошибку:
06-24 21: 52: 36.274: WARN / dalvikvm (297): threadid = 7: поток завершается с необработанным исключением (группа = 0x4001d800)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: AsyncTask # 1
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): java.lang.RuntimeException: произошла ошибка при выполнении doInBackground ()
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.os.AsyncTask $ 3.done (AsyncTask.java:200)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на java.util.concurrent.FutureTask $ Sync.innerSetException (FutureTask.java:273)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в java.util.concurrent.FutureTask.setException (FutureTask.java:124)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:307)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на java.util.concurrent.FutureTask.run (FutureTask.java:137)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1068)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:561)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на java.lang.Thread.run (Thread.java:1096)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): вызвано: android.view.ViewRoot $ CalledFromWrongThreadException: только исходный поток, создавший иерархию представления, может касаться его представлений.
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.ViewRoot.checkThread (ViewRoot.java:2802)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.ViewRoot.requestLayout (ViewRoot.java:594)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.View.requestLayout (View.java:8125)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.View.requestLayout (View.java:8125)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.View.requestLayout (View.java:8125)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.View.requestLayout (View.java:8125)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.widget.ScrollView.requestLayout (ScrollView.java:1200)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.View.requestLayout (View.java:8125)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.ViewGroup.addView (ViewGroup.java:1863)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.ViewGroup.addView (ViewGroup.java:1822)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.view.ViewGroup.addView (ViewGroup.java:1802)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в ReadPhoneBook (IndiaCalling.java:148)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): при доступе $ 0 (IndiaCalling.java:133)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в $ TheTask.doInBackground (IndiaCalling.java:79)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): в $ TheTask.doInBackground (IndiaCalling.java:1)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на android.os.AsyncTask $ 2.call (AsyncTask.java:185)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): на java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305)
06-24 21: 52: 36.436: ОШИБКА / AndroidRuntime (297): ... еще 4
06-24 21: 52: 36.564: WARN / ActivityManager (67): Принудительное завершение деятельности net.WhileOne.IndiaCalling / .IndiaCalling06-24 21: 52: 37.534: WARN / InputManagerService (67): окно уже сфокусировано, игнорируя усиление фокуса: com.android.internal.view.IInputMethodClient$Stub$Proxy@44eab020
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): у телефона активности просочилось окно com.android.internal.policy.impl.PhoneWindow$DecorView@44eeacf8, которое было первоначально добавлено здесь
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): android.view.WindowLeaked: в телефоне активности просочилось окно com.android.internal.policy.impl.PhoneWindow$DecorView@44eeacf8, которое было первоначально добавлено здесь
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.view.ViewRoot. (ViewRoot.java:247)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:148)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.view.WindowManagerImpl.addView (WindowManagerImpl.java:91)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.view.Window $ LocalWindowManager.addView (Window.java:424)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.Dialog.show (Dialog.java:241)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): в Phone.onCreate (Phone.java:47)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1047)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:2033)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.os.Handler.dispatchMessage (Handler.java:99)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.os.Looper.loop (Looper.java:123)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на android.app.ActivityThread.main (ActivityThread.java:4627)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): в java.lang.reflect.Method.invokeNative (собственный метод)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): в java.lang.reflect.Method.invoke (Method.java:521)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:868)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626)
06-24 21: 52: 39.004: ОШИБКА / WindowManager (297): в dalvik.system.NativeStart.main (собственный метод)