我有这个代码在相应的数据库中添加数据。
public class RegisterActivity extends Activity implements OnClickListener {
SQLiteOpenHelper helper;
SQLiteDatabase dbs;
Button reg,exit;
EditText eid,ename,eno,ecourse;
TextView efee;
CheckBox java,net,php,and;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
eid=(EditText)findViewById(R.id.etid);
ename=(EditText)findViewById(R.id.etname);
eno=(EditText)findViewById(R.id.etmob);
efee=(TextView)findViewById(R.id.etfee);
efee.setText(""+ 0);
java=(CheckBox)findViewById(R.id.tvjava);
php=(CheckBox)findViewById(R.id.tvphp);
net=(CheckBox)findViewById(R.id.tv_net);
and=(CheckBox)findViewById(R.id.tvand);
reg=(Button)findViewById(R.id.tvreg);
exit=(Button)findViewById(R.id.tvcan);
reg.setOnClickListener(this);
exit.setOnClickListener(this);
java.setOnClickListener(this);
helper=new SQLiteOpenHelper(this,"AMS",null,1) {
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table Reg_Student(_id integer primary key autoincrement,name text,contact integer,java text,net text,php text,andr text,fee integer)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
};
dbs=helper.getWritableDatabase();
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentValues cv=new ContentValues();
int fees=0;
if(v == reg)
{
//ContentValues cv=new ContentValues();
cv.put("name",ename.getText().toString());
cv.put("contact",Integer.parseInt(eno.getText().toString()));
if(java.isChecked())
{
fees = fees + 5000;
efee.setText(String.valueOf(fees));
cv.put("java",java.getText().toString());
}
if(php.isChecked())
{
fees = fees + 2000;
efee.setText(String.valueOf(fees));
cv.put("php",php.getText().toString());
}
if(and.isChecked())
{
fees = fees + 4000;
efee.setText(String.valueOf(fees));
cv.put("andr",and.getText().toString());
}
if(net.isChecked())
{
fees = fees + 5000;
efee.setText(String.valueOf(fees));
cv.put("net",net.getText().toString());
}
cv.put("fee",fees);
long id = dbs.insert("Reg_Student", null, cv);
Toast.makeText(this, "Registered with id : "+id, Toast.LENGTH_LONG).show();
reg.setEnabled(false);
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
helper.close();
}
}
这里,数据被添加到数据库中,但是当我选择特定的文本框时,setText没有被更改。
我是android的新手,所以请帮助我解决这个问题。
答案 0 :(得分:2)
将efee.setText(Integer.toString(fees));
替换为(使用此方式)efee.setText(""+fees);
efee.setText(""+fees);
正在处理您的数据类型。
<强>编辑:强>
如果您想在注册前显示费用,请使用以下方式:
chkIos = (CheckBox) findViewById(R.id.chkIos);
chkIos.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//is chkIos checked?
if (java.isChecked()) {
efee.setText(""+fees);
}
}
});
答案 1 :(得分:1)
使用这种方式,首先chnage int to string然后在文本视图上设置
efee.setText(String.valueOf(fees));
答案 2 :(得分:0)
if(php.isChecked())
{
fees = fees + 2000;
efee.setText(Integer.toString(fees));// Problem is in this line.
...
将其更改为
efee.setText(String.valueOf(fees));
更新 //将代码添加到setText onChecked
//in onCreate()
CheckBox cb = (CheckBox) findViewById(R.id.javaCB);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked)
{
fees = fees + 2000;
efee.setText(String.valueOf(fees));
}
}
});
同样,您可以设置其他CheckBoxes。注意:您必须在此方法中访问efee。所以在开头就宣布它。
答案 3 :(得分:0)
将您的代码更改为
下面的代码 if (php.isChecked()) {
fees = fees + 2000;
efee.setText(fees+"");
原因 - 如果您指定一个Integer,Android会认为它是对资源的引用,例如R.string.somevalue。
因此您需要将其指定为字符串。
答案 4 :(得分:0)
好吧,我假设你的java是一个CheckBox。 然后,您需要将OnCheckedChangeListener添加到您的java组件
java.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if(isChecked)
{
fees = fees + 5000;
efee.setText("" + fees);
cv.put("java", java.getText().toString());
}
}
});