2013-03-21 87 views
-1

任何人都有一個想法,爲什麼我可能會得到這個錯誤?類型TimePicker中的setCurrentMinute(Integer)方法不適用於參數(字符串)

我所要做的就是保存timepicker選擇的小時......我確定這是我忽略的一些簡單的東西。

任何幫助非常感謝!

阿曼尼斯旺

import android.app.Activity; 
import android.app.AlertDialog; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.ViewGroup; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.FrameLayout; 
import android.widget.TimePicker; 

public class AddEditCountry extends Activity { 

private long rowID; 
private EditText nameEt; 
private EditText capEt; 
private EditText codeEt; 
private TimePicker timeEt; 

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

     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")); 
     timeEt.setCurrentHour(extras.getString("time")); 
     } 

     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(AddEditCountry.this); 
       alert.setTitle(R.string.errorTitle); 
       alert.setMessage(R.string.errorMessage); 
       alert.setPositiveButton(R.string.errorButton, null); 
       alert.show(); 
      } 
      } 
    }); 
    } 

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

     if (getIntent().getExtras() == null) 
     { 
      dbConnector.insertContact(nameEt.getText().toString(), 
        capEt.getText().toString(), 
        timeEt.getCurrentHour().toString(), 
        codeEt.getText().toString()); 
     } 
     else 
     { 
     dbConnector.updateContact(rowID, 
      nameEt.getText().toString(), 
      capEt.getText().toString(), 
      timeEt.getCurrentHour().toString(), 
      codeEt.getText().toString()); 
     } 
    } 
} 
+2

沒有在消息明朗?您無法將一個字符串傳遞給setCurrentMinute(),因爲它接受一個int作爲參數。 – 2013-03-21 22:53:10

回答

1

的問題是,setCurrentHour()期望一個整數,但通過調用getString()你傳遞一個字符串,併爲錯誤狀態,對於setCurrentHour(String)沒有方法。

你不會告訴我們Intent的額外設置在哪裏,所以這個解決方案是一個猜測。但嘗試:

timeEt.setCurrentHour(extras.getInt("time")); 
+0

真棒,幫助 - 謝謝你! – NoobNinja 2013-03-22 00:17:24

0

如果額外對象沒有一個getInt()方法,你可以試試:timeEt.setCurrentHour(Integer.valueof(extras.getString("time")));

+0

Bundle有['getInt()'](https://developer.android.com/reference/android/os/Bundle.html#getInt%28java.lang.String%29)。雖然您可以將整數轉換爲字符串,然後返回整數,但我更喜歡跳過循環數據類型轉換。 – Sam 2013-03-21 23:24:18

相關問題