2014-04-14 17 views
0

如何保存切換按鈕狀態數據庫,如果用戶編輯然後編輯狀態應保存到android.the數據庫是我的代碼,它工作正常。但問題是,當用戶編輯它處於開狀態和綠燈顯示切換按鈕。然後用戶執行所需的操作。當用戶再次回來編輯時,它只在上顯示,但是沒有綠燈可見。所以請幫助我,以下是我的代碼。如何保存切換按鈕狀態到數據庫,如果用戶編輯然後編輯狀態應保存到數據庫android

protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.edit_layout); 
       edittext=(EditText)findViewById(R.id.device_text); 
       light=(ToggleButton)findViewById(R.id.light); 
       alarm=(ToggleButton)findViewById(R.id.alarm); 
       db = new DataBaseAdapter(this); 

       Intent i = getIntent(); 


        if(i.hasExtra("Dname")) 
         val = i.getStringExtra("Dname"); 


        if(i.hasExtra("Dlight")) 
        slight=i.getStringExtra("Dlight"); 
        blight=Boolean.valueOf(slight); 


        if(i.hasExtra("Dalarm")) 
        salarm=i.getStringExtra("Dalarm"); 
        balarm=Boolean.valueOf(balarm); 
       if(i.hasExtra("Daddress")) 
        pos=i.getStringExtra("Daddress"); 


       db.open();     
       db.insertData(pos,val,slight,salarm); 

       c = db.getData(); 
       edittext.setText(val); 
       light.setText(slight); 
       // light.setChecked(blight); 
       alarm.setText(salarm); 
       //alarm.setChecked(balarm); 

        db.close(); 
      } 


       @Override 
       public void onBackPressed(){ 
        db.open(); 
        c=db.getData(); 

        if (c.moveToFirst()) { 
         do { 


           String strSQL = "UPDATE DeviceDetails SET devicename ='"+ edittext.getText().toString() +"' WHERE uuid = '"+c.getString(c.getColumnIndex("uuid"))+"'" ; 
           db.select(strSQL); 

           slight=light.getText().toString(); 
           salarm=alarm.getText().toString(); 


           if(pos.equalsIgnoreCase(c.getString(c.getColumnIndex("uuid")))) 
           { 
           db.updateData(pos, edittext.getText().toString(),slight,salarm); 
           } 

          Intent intent=new Intent(); 
          intent.putExtra("Dname", edittext.getText().toString()); 
          intent.putExtra("Daddress",pos); 
          intent.putExtra("Dlight", slight); 
          intent.putExtra("Dalarm", salarm); 
          setResult(RESULT_OK, intent); 
          finish(); 
        } while (c.moveToNext()); 
        } 

       db.close(); 

       super.onBackPressed(); 
       } 
} 
+0

我無線本地環路建議你使用共享prefrences保存狀態,這樣就可以擺脫entring的長碼,並從數據庫 – raj

+0

這是件好事歌廳可是當我打開應用程序應該retrive從數據database.if它退出它應顯示該數據,否則null.so我使用數據庫。 – image

+0

@ user3467237請閱讀與共享偏好相關的文檔。您是否知道即使您重新啓動設備,Shared Preference中的數據仍然存在?共享首選項中的數據以鍵值格式存在,這對於此場景很方便。對於單個值,使用SQLite並不是真的需要。 – Pallavi

回答

0
通過以下方式我這樣做,我的問題解決了

    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.edit_layout); 
    edittext=(EditText)findViewById(R.id.device_text); 
    light=(ToggleButton)findViewById(R.id.light); 
    alarm=(ToggleButton)findViewById(R.id.alarm); 
    db = new DataBaseAdapter(this); 

    Intent i = getIntent(); 


     if(i.hasExtra("Dname")) 
      val = i.getStringExtra("Dname"); 


     if(i.hasExtra("Dlight")) 
     slight=i.getStringExtra("Dlight"); 
     blight=Boolean.valueOf(slight); 


     if(i.hasExtra("Dalarm")) 
     salarm=i.getStringExtra("Dalarm"); 
     balarm=Boolean.valueOf(balarm); 

     Log.v("___EDIT CLASS____________", "__LIGHT TEXT_____________"+slight); 
     Log.v("_____EDIT CLASS_____________", "___ALARM TEXT____________"+salarm); 

     Log.v("___EDIT CLASS____________", "__LIGHT boolean_____________"+blight); 
     Log.v("_____EDIT CLASS_____________", "___ALARM boolean____________"+balarm); 


// edittext.setText(val); 
    if(i.hasExtra("Daddress")) 
     pos=i.getStringExtra("Daddress"); 
    Log.v("___________edittext", "_______________"+edittext.getText()); 
    Log.v("__________address", "_______________"+pos); 


    db.open(); 

    db.insertData(pos,val,slight,salarm); 

    c = db.getData(); 
    edittext.setText(val); 
    light.setText(slight); 
    // light.setChecked(blight); 
    alarm.setText(salarm); 
    //alarm.setChecked(balarm); 
    if(slight.equalsIgnoreCase("on")) 
    { 
     light.setChecked(true); 
    } 
    else 

    { 
     light.setChecked(false); 
    } 
    if(salarm.equalsIgnoreCase("on")) 
    { 
     alarm.setChecked(true); 
    } 
    else 

    { 
     alarm.setChecked(false); 
    } 

db.close(); }

@Override 
    public void onBackPressed(){ 
     //saveData(); 
     db.open(); 
     c=db.getData(); 

     if (c.moveToFirst()) { 
      do { 

        // slight=light.setClickable(true); 
        //salarm= String.valueOf(balarm); 

        Log.v("_______BACK PRESSED", "______UUID___________"+c.getString(c.getColumnIndex("uuid"))); 
        Log.v("_______pos", "______UUID___________"+pos); 
        String strSQL = "UPDATE DeviceDetails SET devicename ='"+ edittext.getText().toString() +"' WHERE uuid = '"+c.getString(c.getColumnIndex("uuid"))+"'" ; 
        db.select(strSQL); 
        Log.v("___QUERY ", "_________________"+db.select(strSQL)); 
        slight=light.getText().toString(); 
        salarm=alarm.getText().toString(); 
        Log.v("___EDIT CLASS____________", "__SLIGHT ___AFTER__________"+slight); 
        Log.v("_____EDIT CLASS_____________", "___SALARM ___AFTER_________"+salarm); 

        if(pos.equalsIgnoreCase(c.getString(c.getColumnIndex("uuid")))) 
        { 
        db.updateData(pos, edittext.getText().toString(),slight,salarm); 
        } 
        /*Log.v("_______BACK PRESSED", "______UUID___________"+c.getString(c.getColumnIndex("uuid"))); 
        Log.v("_______cccccc", "______devicename___________"+c.getString(c.getColumnIndex("devicename"))); 
        Log.v("______EDIT IN DB", "______LIGHT___________"+c.getString(c.getColumnIndex("light"))); 
        Log.v("______EDIT IN DB", "______ALARM___________"+c.getString(c.getColumnIndex("alarm"))); 
      */ 
      /* Log.v("______device_____text", "_______________"+c.getString(c.getColumnIndex("devicename"))); 
       Log.v("___________edittext", "_______________"+edittext.getText().toString()); 
       Log.v("_____ADDRESS______edittext", "_______________"+pos); 
      */ Intent intent=new Intent(); 
       intent.putExtra("Dname", edittext.getText().toString()); 
       Log.v("_____edittext in intent________", "__________"+edittext.getText().toString()); 
       intent.putExtra("Daddress",pos); 
       Log.v("_____edittext in intent________", "__________"+pos); 
       intent.putExtra("Dlight", slight); 
       intent.putExtra("Dalarm", salarm); 
       setResult(RESULT_OK, intent); 
       finish(); 
      /* Log.v("_______EDIT IN DB", "______devicename___________"+c.getString(c.getColumnIndex("devicename"))); 
       Log.v("______EDIT IN DB", "______LIGHT___________"+c.getString(c.getColumnIndex("light"))); 
       Log.v("______EDIT IN DB", "______ALARM___________"+c.getString(c.getColumnIndex("alarm"))); 
     */ 
      } while (c.moveToNext()); 
     } 

    db.close(); 

    super.onBackPressed(); 
    } 
0

您可以使用SharedPrefernce來保存切換按鈕的狀態。

sharedpreferences = context.getSharedPreferences("Toggle_pref", Context.MODE_PRIVATE); 

Editor editor = sharedpreferences.edit(); 

editor.putInt("button_state", "state"); 

editor.commit(); 
+0

那麼我怎麼能保存到database.it是好的,但是,當我打開應用程序它應該從數據庫檢索數據。如果它退出它應該顯示該數據,否則null.so我使用數據庫。 – image

+0

使用SharedPreferences可以保存數據以及SharedPreferences可以執行的操作。在打開應用程序時,只需要用這種代碼檢索存儲的內容:SharedPreferences sharedpreferences = getApplicationContext()。getSharedPreferences(「Toggle_pref」,Context.MODE_PRIVATE); Integer buttonState = sharedpreferences.getInt(「button_state」,0); –

0

這對於保存狀態的toogle按鈕代碼..

private SharedPreferences spref; 
    private ToggleButton tb; 
    private boolean on; 

    spref = getSharedPreferences("APP", MODE_PRIVATE); 
      tb = (ToggleButton) findViewById(R.id.toogleButton); 
      on = spref.getBoolean("On", true); //default is true 
      if (on) 
      { 
       tb.setChecked(true); 
      }  else 
      { 
       tb.setChecked(false); 
      } 

      tb.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 
        if (tb.isChecked()) { 
          //Toast.makeText(MainActivity.this, "On : Notification will be Enabled", Toast.LENGTH_SHORT).show(); 
          SharedPreferences.Editor editor = spref.edit(); 
          editor.putBoolean("On", true); // value to store 
          editor.commit(); 

         } else { 
         // Toast.makeText(MainActivity.this, "Off : Notification will be Disabled", Toast.LENGTH_SHORT).show(); 
          SharedPreferences.Editor editor =spref.edit(); 
          editor.putBoolean("On", false); // value to store 
          editor.commit(); 
         } 
       } 
      }); 
+0

嗨,大師,我必須保存在數據庫和retrive。 – image

相關問題