2013-05-29 35 views
2

我有這段代碼在相應的數據庫中添加數據。setText在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我選擇一個特定的文本框是沒有得到改變。

我是新來的機器人,所以好心幫我解決這個問題。

+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

+0

我也試過了。當我點擊註冊按鈕時它顯示正確的值。但是我想如果我選擇java,它應該在文本框中顯示費用,但是它在點擊註冊按鈕後顯示是錯誤的。 – user2431224

+0

是否意味着您要點擊註冊按鈕之前顯示費用? –

+0

你.....這就是我想要的...... – user2431224

1

用這種方式,第一chnage INT串然後在文本視圖設置

efee.setText(String.valueOf(fees)); 
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)); 
      } 
     } 
    }); 

同樣可以設置其他複選框。注意:您必須在此方法內使efee可訪問。所以在開始時就宣佈它。

+0

我也已經嘗試過,當我點擊註冊按鈕時,它顯示正確的值。但是我希望如果我選擇java,它應該在文本框中顯示費用,但是在點擊錯誤的註冊按鈕後顯示。 – user2431224

+0

代碼是在Onclick方法裏面,所以更改會在點擊右鍵後出現? – SKK

+0

ya ...正確....只要單擊複選框,我可以在文本框中顯示費用? – user2431224

0

更改您的代碼如下

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

的一個原因 - 如果你指定一個整數,Android將認爲這是對資源的參考,像R.string.somevalue。

所以你需要將它指定爲一個字符串。

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()); 
      } 
     } 
    }); 
+0

我使用cv的對象來添加其他值,如名稱,聯繫電話號碼。添加到databse.So我不能在匿名類中使用相同的內容值對象&同樣,我不能使用費用變量。我希望你明白我的觀點。 – user2431224