2013-05-29 3 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 не получает изменился, когда я выбираю определенное текстовое поле.

Я новичок в 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); 
     } 

     } 
    }); 

how use checkbox in android.

+0

Я уже пробовал это too.It отображает правильное значение, когда я нажимаю на кнопку register.But я хочу, чтобы, если я выбираю java, он должен отображать сборы в текстовом поле, но он отображается после нажатия кнопки регистрации, которая является неправильной. – user2431224

+0

означает, что вы хотите показать комиссию перед нажатием кнопки регистрации? –

+0

ya ..... thats what i want ... – 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)); 

Update // добавления кода 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 внутри этого метода. поэтому объявите его в самом начале.

+0

Я тоже это пробовал. Он отображает правильное значение, когда я нажимаю кнопку регистрации.Но я хочу, чтобы, если я выбираю java, он должен отображать сборы в текстовом поле, но он отображается после нажатия кнопки регистрации, которая является неправильной. – user2431224

+0

код внутри метода Onclick, поэтому изменение появится после нажатия только справа? – SKK

+0

ya ... right .... что я могу сделать, чтобы отображать плату в текстовом поле всякий раз, когда установлен флажок? – user2431224

0

Изменить код как один ниже

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

Причина - Если вы задаете Integer, 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.Так что я не могу использовать один и тот же объект значений контента в анонимном классе и аналогичным образом, я не могу использовать переменную гонорара в этом. Надеюсь, что у меня будет смысл. – user2431224

Смежные вопросы