2013-03-21 123 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

相关问题