调用我的方法的Java代码,该方法为Android应用程序的SQLite数据库添加信息
我在屏幕上有两个文本字段和一个按钮。按下按钮时,我希望名称文本字段中的信息传递给变量,然后在我的DatabaseHelper.class中运行我的addAccount方法,将变量传递给此方法,这应该将变量信息存储在SQLite数据库中 这里是我的活动与文本字段和按钮调用我的方法的Java代码,该方法为Android应用程序的SQLite数据库添加信息,android,sqlite,methods,Android,Sqlite,Methods,我在屏幕上有两个文本字段和一个按钮。按下按钮时,我希望名称文本字段中的信息传递给变量,然后在我的DatabaseHelper.class中运行我的addAccount方法,将变量传递给此方法,这应该将变量信息存储在SQLite数据库中 这里是我的活动与文本字段和按钮 package mr.mwod.moneyorganiser; import android.app.Activity; import android.os.Bundle; import andro
package mr.mwod.moneyorganiser;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
public class AddAccountActivity extends Activity{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.addaccountlayout);
Button addAccountVairiable = (Button) findViewById(R.id.addAccountButton);
addAccountVairiable.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText accountNameData = (EditText)findViewById(R.id.accountNameTextField);
String accountNameVairiable = accountNameData.getText().toString();
//Need the code here to run addAccount form DatabaseHelper.class
//accountName vairiable needs to be passed into the method as the information to store.
}
});
}
}
我已经评论了我认为代码需要去哪里以及它需要做什么
这是我的DatabaseHelper.class封装,它们的错误在那里
package mr.mwod.moneyorganiser;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_NAME = "money_organiser";
private static final String TABLE_ACCOUNTS = "accounts";
private static final String KEY_ID = "id";
private static final String KEY_NAME = "account_name";
private static final String KEY_ACCOUNT_BALANCE = "account_balance";
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_ACCOUNTS + "("
+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"
+ KEY_ACCOUNT_BALANCE + " INTEGER" + ")";
db.execSQL(CREATE_CONTACTS_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + TABLE_ACCOUNTS);
// Create tables again
onCreate(db);
}
public void addAccount(String name) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(KEY_NAME, name);
db.insert(TABLE_ACCOUNTS, null, values);
db.close();
}
}
任何帮助都将不胜感激。你的问题有什么诀窍吗?不仅仅是调用新的数据库助手this.addAccountNameVairiable;工作当然,重用变量是有意义的,而不是每次都分配它,但我几乎可以肯定这不是您的问题 顺便说一下,我建议您更改表的主键列的名称。使用_id,一些android助手方法将以这种方式更容易使用 编辑:我刚刚注意到这个调用发生在匿名类中。正如您所注意到的,这将触发编译错误,因为侦听器不是上下文。活动正在进行中。幸运的是,通过使用父活动(即上下文)放置用于ocnstruction的类,可以很容易地解决这个问题
new DatabaseHelper(AddAccountActivity.this).addAccount(accountNameVairiable);
看起来您缺少的只是在突出显示的行中调用DatabaseHelper.addAccount 这不管用吗?如果您遇到错误,请告诉我们问题是什么
如果您想知道如何访问DatabaseHelper,那么您可以将其设置为单例,并在需要时引用其实例。我一开始就尝试了这个方法,但一开始就忘记了“new”,就像个白痴一样。但是现在我在突出显示“new DatabaseHelper”时遇到一个错误。我联机获取了数据库帮助程序代码,错误是:-构造函数DatabaseHelpernew视图。OnClickListner{}未定义。我猜我的助手类现在是问题所在。这也是很容易解决的问题。请考虑我的答案,将在2分钟内出现的编辑。