在android编程中使用类的方法

时间:2011-03-18 14:03:25

标签: java android

大家好我是android的初学者,请帮忙。 我有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");  

        }
    };
}

3 个答案:

答案 0 :(得分:2)

db变量设为DBActivity的字段。您可能不希望在UI线程上执行数据库操作。

答案 1 :(得分:2)

您的db方法结束时似乎正在关闭onCreate()。您应该确保在open()中再次close()onClick()。您也应该在从onClick()方法开始的后台线程中完成实际工作。

答案 2 :(得分:0)

db的范围仅限于onCreate()方法。您可能希望将其设为Class

的公开成员