2013-04-22 34 views
0

我有一個TimePicker,我想用它來確定用戶可以保持連接的時間長度。假設現在的時間是10:00,如果用戶選擇了11:00 - 我希望下面的源代碼確定當前時間與選定的時間之間有60分鐘,並將其設置爲字符串/ long(分鐘),然後我顯示爲一個文本視圖。TimePicker在SQLite數據庫中保存零值

我已經編碼了一切,因爲我認爲它應該是 - 但是textview從未似乎更新與分鐘值。每當我嘗試查看數據時 - 無論timepicker設置爲什麼,都會得到0的值。

任何人有任何建議嗎?目前我很難過,我不確定還有什麼可以嘗試的。

ADDEDITDEVICE.JAVA(其中timepicker和分鐘判定發生)

public class AddEditDevice extends Activity { 

    private long rowID; 
    private EditText nameEt; 
    private EditText capEt; 
    private EditText codeEt; 
    private TimePicker timeEt; 
    private TextView ssidTextView; 
    Date date = new Date(); 
    TimePicker tp; 




     // @Override 
     public void onCreate(Bundle savedInstanceState) 
     { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.add_country); 
      WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
      WifiInfo info = wifi.getConnectionInfo(); 
      String ssidString = info.getSSID(); 

      if (ssidString.startsWith("\"") && ssidString.endsWith("\"")){ 
       ssidString = ssidString.substring(1, ssidString.length()-1); 


      //TextView ssidTextView = (TextView) findViewById(R.id.wifiSSID); 
      ssidTextView = (TextView) findViewById(R.id.wifiSSID); 
      ssidTextView.setText(ssidString); 

      nameEt = (EditText) findViewById(R.id.nameEdit); 
      capEt = (EditText) findViewById(R.id.capEdit); 
      codeEt = (EditText) findViewById(R.id.codeEdit); 
      timeEt = (TimePicker) findViewById(R.id.timeEdit); 






      Bundle extras = getIntent().getExtras(); 

      if (extras != null) 
      { 
      rowID = extras.getLong("row_id"); 
      nameEt.setText(extras.getString("name")); 
      capEt.setText(extras.getString("cap")); 
      codeEt.setText(extras.getString("code"));  
      String time = extras.getString("time"); 
      String[] parts = time.split(":"); 
      timeEt.setCurrentHour(Integer.valueOf(parts[0])); 
      timeEt.setCurrentMinute(Integer.valueOf(parts[1])); 
      timeEt.setIs24HourView(false); 

      date.setMinutes(tp.getCurrentMinute()); 
      date.setHours(tp.getCurrentHour()); 
      Long.toString(minutes); 


      } 

      Button saveButton =(Button) findViewById(R.id.saveBtn); 
      saveButton.setOnClickListener(new OnClickListener() { 

       public void onClick(View v) 
       { 
       if (nameEt.getText().length() != 0) 
       { 
        AsyncTask<Object, Object, Object> saveContactTask = 
         new AsyncTask<Object, Object, Object>() 
         { 
          @Override 
          protected Object doInBackground(Object... params) 
          { 
          saveContact(); 
          return null; 
          } 

          @Override 
          protected void onPostExecute(Object result) 
          { 
          finish(); 
          } 
         }; 

        saveContactTask.execute((Object[]) null); 
       } 

       else 
       { 
        AlertDialog.Builder alert = new AlertDialog.Builder(AddEditDevice.this); 
        alert.setTitle(R.string.errorTitle); 
        alert.setMessage(R.string.errorMessage); 
        alert.setPositiveButton(R.string.errorButton, null); 
        alert.show(); 
       } 
       } 
     });} 
     } 

     long minutes = ((new Date()).getTime() - date.getTime())/(1000 * 60); 


      private void saveContact() 
      { 
       DatabaseConnector dbConnector = new DatabaseConnector(this); 

       if (getIntent().getExtras() == null) 
       { 
//    Log.i("Test for Null", ""+dbConnector+" "+nameEt+" "+capEt+" "+timeEt+" "+codeEt+" "+ssidTextView); 
        dbConnector.insertContact(nameEt.getText().toString(), 
          capEt.getText().toString(), 
          timeEt.getCurrentHour().toString() + ":" 
           + timeEt.getCurrentMinute().toString(), 
          codeEt.getText().toString(), 
          Long.toString(minutes), 
         ssidTextView.getText().toString()); 

       } 
       else 
       { 
       dbConnector.updateContact(rowID, 
         nameEt.getText().toString(), 
          capEt.getText().toString(), 
           timeEt.getCurrentHour().toString() + ":" 
            + timeEt.getCurrentMinute().toString(), 
           codeEt.getText().toString(), 
           Long.toString(minutes), 
           ssidTextView.getText().toString()); 
       } 
      } 
} 

VIEW COUNTRY.JAVA(其中分鐘數據由timepicker設置應該是可見的)

public class ViewCountry extends NfcBeamWriterActivity { 

    private static final String TAG = ViewCountry.class.getName(); 

    protected Message message; 

    NfcAdapter mNfcAdapter; 
    private static final int MESSAGE_SENT = 1; 
    private long rowID; 
    private TextView nameTv; 
    private TextView capTv; 
    private TextView codeTv; 
    private TextView timeTv; 
    private TextView ssidTv; 
    private TextView combined; 
    private TextView minutes; 
    //String timetest = "300"; 


    // String a="\""; 
    // String b="\""; 

    // String message1 = a + ssidTv.getText().toString() +"," + 
    // capTv.getText().toString()+b; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_country); 


    SharedPreferences prefs=getPreferences(Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor=prefs.edit(); 
     editor.putBoolean("name", true); 
     editor.putBoolean("cap", true); 
     editor.putBoolean("code", true); 
     editor.putBoolean("time", true); 
     editor.putBoolean("ssid",true); 
     editor.putBoolean("minutes",true); 
     editor.putBoolean("timetest",true); 
     editor.commit(); 



     setDetecting(true); 
     startPushing(); 

     setUpViews(); 
     Bundle extras = getIntent().getExtras(); 
     rowID = extras.getLong(CountryList.ROW_ID); 
    } 

    private void setUpViews() { 
     nameTv = (TextView) findViewById(R.id.nameText); 
     capTv = (TextView) findViewById(R.id.capText); 
     timeTv = (TextView) findViewById(R.id.timeEdit); 
     codeTv = (TextView) findViewById(R.id.codeText); 
     ssidTv = (TextView) findViewById(R.id.wifiSSID); 
     minutes = (TextView) findViewById(R.id.Minutes); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     new LoadContacts().execute(rowID); 
    } 

    private class LoadContacts extends AsyncTask<Long, Object, Cursor> { 
     DatabaseConnector dbConnector = new DatabaseConnector(ViewCountry.this); 

     @Override 
     protected Cursor doInBackground(Long... params) { 
      dbConnector.open(); 
      return dbConnector.getOneContact(params[0]); 
     } 

     @Override 
     protected void onPostExecute(Cursor result) { 
      super.onPostExecute(result); 

      result.moveToFirst(); 
      int nameIndex = result.getColumnIndex("name"); 
      int capIndex = result.getColumnIndex("cap"); 
      int codeIndex = result.getColumnIndex("code"); 
      int timeIndex = result.getColumnIndex("time"); 
      int ssidIndex = result.getColumnIndex("ssid"); 

      nameTv.setText(result.getString(nameIndex)); 
      capTv.setText(result.getString(capIndex)); 
      timeTv.setText(result.getString(timeIndex)); 
      codeTv.setText(result.getString(codeIndex)); 
      ssidTv.setText(result.getString(ssidIndex)); 

      result.close(); 
      dbConnector.close(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.view_country_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.editItem: 
      Intent addEditContact = new Intent(this, AddEditDevice.class); 

      // addEditContact.putExtra(CountryList.ROW_ID, rowID); 
      // addEditContact.putExtra("name", nameTv.getText()); 
      // addEditContact.putExtra("cap", capTv.getText()); 
      // addEditContact.putExtra("code", codeTv.getText()); 
      startActivity(addEditContact); 
      return true; 

     case R.id.user1SettingsSave: 
      Intent Tap = new Intent(this, Tap.class); 
      startActivity(Tap); 
      return true; 

     case R.id.deleteItem: 
      deleteContact(); 
      return true; 

     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    private void deleteContact() { 

     AlertDialog.Builder alert = new AlertDialog.Builder(ViewCountry.this); 

     alert.setTitle(R.string.confirmTitle); 
     alert.setMessage(R.string.confirmMessage); 

     alert.setPositiveButton(R.string.delete_btn, 
       new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog, int button) { 
         final DatabaseConnector dbConnector = new DatabaseConnector(
           ViewCountry.this); 

         AsyncTask<Long, Object, Object> deleteTask = new AsyncTask<Long, Object, Object>() { 
          @Override 
          protected Object doInBackground(Long... params) { 
           dbConnector.deleteContact(params[0]); 
           return null; 
          } 

          @Override 
          protected void onPostExecute(Object result) { 
           finish(); 
          } 
         }; 

         deleteTask.execute(new Long[] { rowID }); 
        } 
       }); 

     alert.setNegativeButton(R.string.cancel_btn, null).show(); 
    } 

} 

回答

-1

使用create表如果不存在T/N,那麼你的問題將被解決。

否則它會覆蓋當前表,同時所有的數據都會丟失。

+0

如果您正在尋找在那裏我將數據保存到我的數據庫是AddEditCountry.java(我添加上述每類文件的摘要) – 2013-04-22 11:39:28

+0

@coding魔鬼不是答案。這可以是評論。 – Vinay 2013-04-22 12:40:00

+0

@BillFlorentine我認爲這是你的數據庫類中的onCreate()方法的問題,比如Create Table IF NOT Exists TN檢查這個語句是否存在,否則如果你這樣寫的話CREATE TABLE TN會覆蓋整個表和以前的數據會迷路。所以請檢查它。 – 2013-04-22 14:01:50

0
dbConnector.insertContact(nameEt.getText().toString(), 
capEt.getText().toString(), 
timeEt.getCurrentHour().toString() + ":" + timeEt.getCurrentMinute().toString(), 
codeEt.getText().toString(), 
minutes, 
Long.toString(minutes), 
ssidTextView.getText().toString()); 

您有代碼添加聯繫人,但在你的數據庫連接器高你:

public void insertContact(String name, 
String cap, 
String code, 
String time, 
long minutes, 
String ssid, 
String string){ 

我認爲不匹配,所以這就是爲什麼不正確插入。 順便說一下,我目前無法評論,因爲我需要50點聲望。

問候

+0

我更新了上面的源代碼以匹配 - 仍然無法查看我保存到我的數據庫的任何內容使用CountryList – 2013-04-22 12:33:12

+0

爲什麼onPostExecute(遊標結果){}您有:ALTER TABLE my_table; ADD COLUMN new_column ; – 2013-04-22 12:38:24

+0

這是一個來自另一個用戶的建議 - 我已經刪除它並更新了我的源代碼 - 它清除了我在實現他們的建議後得到的「問題」 - 我目前沒有問題 - 除了我不能在添加分鐘值後保存/檢索數據(上面的源代碼正是我現在的樣子) – 2013-04-22 12:40:55

相關問題