setText在android中不起作用

时间:2013-05-29 06:21:26

标签: android

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

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

5 个答案:

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

      }
    });

how use checkbox in android

答案 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());
            }
        } 
    });