데이터베이스 생성 중 progresDialog 또는 일부 정보를 표시하도록 코드 조각을 변경하는 데 도움을 주시겠습니까? 나는 Thread를 성공시키지 않으려 고 노력했다. 대부분의 코드를 쓰레드에 넣었을 때 데이터베이스가 생성되기 전에 db.createDataBase() "text"가 설정되었을 때 오류가 발생합니다.progressDialog 데이터베이스 생성
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myCalendar = new MyCalendar();
menu = (TextView) findViewById(R.id.poleMenu);
text = (TextView) findViewById(R.id.glownePoleTekstowe);
menu.setText(kalendarz.setCurrentDateOnView());
value = menu.getText().toString();
db = new DatabaseHandler(this);
try {
// separate class to load database
// MOST IMPORTANT
db.createDataBase();
} catch (IOException ioe) {
throw new Error("nie można utworzyć bazy danych");
}
dane = db.getDataFromDate(value);
db.close();
try {
log = dane.getTekst();
}catch(Exception e) {System.out.println(e);}
text.setText(log);
}
업데이트, 스레드와 핸들러 :
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
kalendarz = new Kalendarz();
menu = (TextView) findViewById(R.id.poleMenu);
text = (TextView) findViewById(R.id.glownePoleTekstowe);
menu.setText(kalendarz.setCurrentDateOnView());
value = menu.getText().toString();
db = new DatabaseHandler(this);
// thread
ladujDane();
dane = db.getDaneFromDate(value);
db.close();
try {
log = dane.getTekst();
}catch(Exception e) {System.out.println(e);}
text.setText(log);
}
// --------------------------- ---------------
public void ladujDane() {
mLoadDBHandler = new Handler()
{
@Override
public void handleMessage(Message msg)
{
progressDialog.dismiss();
}
};
progressDialog = ProgressDialog.show(
this,
"Ładowanie danych", "Proszę chwilkę poczekać",
true,
false);
Thread t = new Thread(new LoadDBThread());
t.start();
}
// -------------------------- --------------
private class LoadDBThread implements Runnable
{
public void run()
{
try {
db.createDataBase();
} catch (IOException ioe) {
throw new Error("nie można utworzyć bazy danych");
}
mLoadDBHandler.sendEmptyMessage(0);
}
}
어떤 종류 : DB 당신이 전화를 생성 스레드에서 그런
: 먼저 핸들러를 선언? 작동하지 않는 코드에서 AsyncTask를 사용하고 있습니까? – piotrpo
치명적인 예외 : 스레드 8 android.view.ViewRoot $ CalledFromWrongThreadException :보기 계층 구조를 만든 원래 스레드 만 해당보기를 만질 수 있습니다. /// 내가 쓰레드 – Mirek