2011-02-28 53 views
0

我正在创建sign_up和sign_in页面,并且键入editview的数据将存储在数据库中。 因此,对于数据库,我创建一个名为DBAdapter.java的类,而我的另一个文件是signup.java和login.java。 所以我想这样做,当我点击提交按钮数据将被存储在数据库中。 但问题是,我不能使用DBAdapter.java的实例数据库到login.java文件中的登录按钮的提交按钮和相同问题的onclick事件。Android:使用一个类的实例到另一个类的问题

感谢提前...

public class DBAdapter 
{ 
    public static final String KEY_ROWID = "_id"; 
    public static final String KEY_FIRSTNAME = "FirstName"; 
    public static final String KEY_LASTNAME = "LastName"; 
    public static final String KEY_USERNAME = "UserName"; 
    public static final String KEY_PASSWORD = "Password";  
    private static final String TAG = "DBAdapter"; 

    private static final String DATABASE_NAME = "master"; 
    private static final String DATABASE_TABLE = "register"; 
    private static final int DATABASE_VERSION = 1; 

    private static final String DATABASE_CREATE = 
     "create table titles (_id integer primary key autoincrement, " 
     + "FirstName text not null, LastName text not null, " 
     + "UserName text not null, Password text not null);"; 

    private final Context context; 

    private DatabaseHelper DBHelper; 
    private SQLiteDatabase db; 

    public DBAdapter(Context ctx) 
    { 
     this.context = ctx; 
     DBHelper = new DatabaseHelper(context); 
    } 

    private static class DatabaseHelper extends SQLiteOpenHelper 
    { 
     DatabaseHelper(Context context) 
     { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) 
     { 
      db.execSQL(DATABASE_CREATE); 
     } 

     @Override 
     public void onUpgrade(SQLiteDatabase db, int oldVersion, 
     int newVersion) 
     { 
      Log.w(TAG, "Upgrading database from version " + oldVersion 
        + " to " 
        + newVersion + ", which will destroy all old data"); 
      db.execSQL("DROP TABLE IF EXISTS titles"); 
      onCreate(db); 
     } 
    } 

和signup.java

public class SignUp extends Activity { 

    private EditText firstname; 
    private EditText lastname; 
    private EditText username; 
    private EditText password; 

    public String first_name; 
    public String last_name; 
    public String user_name; 
    public String pass_word; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     DBAdapter db = new DBAdapter(this); 

     firstname = (EditText) findViewById(R.id.ev_fname); 
     lastname = (EditText) findViewById(R.id.ev_lname); 
     username = (EditText) findViewById(R.id.ev_uname); 
     password = (EditText) findViewById(R.id.ev_password); 

     final Button button = (Button) findViewById(R.id.btn_submit); 
     button.setOnClickListener(new View.OnClickListener() {   
      public void onClick(View v) {    
       first_name = firstname.getText().toString(); 
       last_name = lastname.getText().toString(); 
       user_name = username.getText().toString(); 
       pass_word = password.getText().toString(); 



       Intent goToNextActivity = new Intent(getApplicationContext(), link.class); 
       startActivity(goToNextActivity); 


      } 
     }); 
+0

被这些方法标记为公共的?如果我们能看到一些代码会更好。 – Samuh 2011-02-28 04:58:28

+0

@Samuh我编辑我的问题...我的问题是我不能在onclick事件中使用DBAdapter的实例 – Harry 2011-02-28 05:05:35

回答

0

它更像是一个黑客,我想,但你有这个什么站?

private DBAdapter db; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    db = new DBAdapter(this); 

我想找到一个更好的解决方案我自己,因为这是你的多重需要在我的应用程序了。

+0

让我试试这个............... – Harry 2011-02-28 05:20:59

+0

非常感谢你..现在它的工作......但如果我开了任何问题,我会在这里写这个问题,并通知你,但它现在完成了...所以非常感谢... – Harry 2011-02-28 05:27:22

+0

很高兴我能帮上忙。 :-) – Vitaly 2011-02-28 05:53:39

0

哈利......你有没有尝试过:代替

final DBAdapter db = new DBAdapter(this); 

DBAdapter db = new DBAdapter(this); 

JAL