3

我有这段代码可以在相应的数据库中添加数据。

 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新手,所以请帮我解决这个问题。

4

5 回答 5

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);
        }

      }
    });

如何在 android 中使用复选框

于 2013-05-29T06:28:51.330 回答
1

使用这种方式,首先将 int 更改为字符串,然后在文本视图上设置

efee.setText(String.valueOf(fees));
于 2013-05-29T06:24:10.373 回答
0

将您的代码更改为以下代码

    if (php.isChecked()) {
        fees = fees + 2000;
        efee.setText(fees+"");

原因 - 如果您指定一个整数,Android 会认为它是对资源的引用,例如 R.string.somevalue。

因此,您需要将其指定为字符串。

于 2013-05-29T06:53:37.230 回答
0

好吧,我假设你的 java 是一个 CheckBox。然后你需要在你的 java 组件中添加一个 OnCheckedChangeListener

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());
            }
        } 
    }); 
于 2013-05-29T07:02:32.753 回答
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));
            }
        }
    });

同样,您可以设置其他 CheckBox。注意:您必须在此方法中使 efee 可访问。所以在开始时声明它。

于 2013-05-29T06:29:59.500 回答