2011-03-18 3 views
0

안녕 모두, 도와주세요. DB를 조작하는 데 다른 메소드가있는 DBAdapter 클래스가 있습니다. 단추를 클릭 할 때 삽입 방법을 원합니다. 그러나 리스너 (View.OnClickListener) 외부에서만 작동합니다.사용 방법은 내가 안드로이드에 초보자입니다

package com.dbclass; 

    import android.app.Activity; 
    import android.database.Cursor; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.Toast; 

    public class DBActivity extends Activity { 
     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button btn1 = (Button)findViewById(R.id.Button01); 
     btn1.setOnClickListener(btn1Listener); 


     DBAdapter db = new DBAdapter(this);   
     db.open(); 

     long id; 
     // this needs to go to setOnclick method 
     id = db.insertTitle(
       "0470285818", 
       "Alanel", 
       "Wrox");   

     Cursor c = db.getAllTitles(); 
     if (c.moveToFirst()) 
     { 
      do {   
       DisplayTitle(c); 
      } while (c.moveToNext()); 
     } 
     db.close(); 
    } 

    public void DisplayTitle(Cursor c) 
    { 
     Toast.makeText(this, 
       "id: " + c.getString(0) + "\n" + 
       "ISBN: " + c.getString(1) + "\n" + 
       "TITLE: " + c.getString(2) + "\n" + 
       "PUBLISHER: " + c.getString(3), 
       Toast.LENGTH_LONG).show();   
    } 
    private View.OnClickListener btn1Listener = new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       // db.insertTitle("0470285818", "Alanel", "Wrox"); 

     } 
    }; 
} 

답변

0

db의 범위는 만 onCreate() 방법에 있습니다. 귀하의 Class의 공개 회원으로 만들 수 있습니다. 당신이 당신의 onCreate() 방법의 끝에 db을 닫는 같은

2

db 변수 DBActivity의 필드합니다. 당신은 아마 UI 스레드에서 DB 작업을하고 싶지 않습니다.

2

는 것 같습니다. onClick()open()close()을 다시 입력해야합니다. onClick() 메서드에서 시작하는 백그라운드 스레드에서 실제 작업을 수행해야합니다.

관련 문제