Android 安卓、时间选择器和他在不被调用时的价值

Android 安卓、时间选择器和他在不被调用时的价值,android,datetime,set,picker,Android,Datetime,Set,Picker,我的时间选择器工作得很好,但只有一次它输出错误。若我调用编辑函数,所有变量都是从数据库中填充的,并且我并没有调用时间选择器(用这个函数单击按钮),它会用实际的系统值重写我的db值。我怎样才能修好它?当我用picker点击按钮后,他们会显示我的db值,startactivity的textview会显示db值,但保存后,只有当我点击picker按钮时才会保存db值(打电话给他)。。。我如何设置值,然后我不能点击它,并且值保持在db之外 public class PredmetPridajActivi

我的时间选择器工作得很好,但只有一次它输出错误。若我调用编辑函数,所有变量都是从数据库中填充的,并且我并没有调用时间选择器(用这个函数单击按钮),它会用实际的系统值重写我的db值。我怎样才能修好它?当我用picker点击按钮后,他们会显示我的db值,startactivity的textview会显示db值,但保存后,只有当我点击picker按钮时才会保存db值(打电话给他)。。。我如何设置值,然后我不能点击它,并且值保持在db之外

public class PredmetPridajActivity extends Activity implements OnItemSelectedListener
{
//DateFormat fmtTime = DateFormat.getTimeInstance();
SimpleDateFormat fmtTime = new SimpleDateFormat("kk:mm");
SimpleDateFormat fmtDate2 = new SimpleDateFormat("yyyy-MM-dd kk:mm"); // upravit na den alebo v selecte lepsi order

TextView timeLabel;
Calendar time = Calendar.getInstance ();

public static final String ODOSLI = "odosli";

private DatabaseOp mDbHelper;

String username;
String odosli = "";
String predmet;
String obsah;
String poloha;
String vyucujuci;
String hodina;
String den;

int item;
String strItem;

EditText tv_nazov;
EditText tv_poznamka;
EditText tv_miesto;
EditText tv_vyucujuci;

private Spinner spinner;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.predmet_pridaj);

    this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

    spinner = (Spinner)findViewById(R.id.spinner_dni);

    ArrayAdapter<?> adapter = ArrayAdapter.createFromResource(this, R.array.dni, android.R.layout.simple_spinner_dropdown_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(this);

    mDbHelper = new DatabaseOp(this);
    mDbHelper.open();

    timeLabel = (TextView)findViewById(R.id.time);
    updateLabel();

    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
    username = sharedPrefs.getString("prefUsername", "NULL");

    Intent i = getIntent();
    if (i.hasExtra(ODOSLI))
        odosli = i.getStringExtra(ODOSLI);

    if (odosli.length()>0)
    {
        dbOperations();

        tv_nazov = (EditText)findViewById(R.id.predmet);
        tv_nazov.setText(predmet);

        tv_poznamka = (EditText)findViewById(R.id.obsah);
        tv_poznamka.setText(obsah);

        tv_miesto = (EditText)findViewById(R.id.miesto);
        tv_miesto.setText(poloha);

        tv_vyucujuci = (EditText)findViewById(R.id.vyucujuci);
        tv_vyucujuci.setText(vyucujuci);

        timeLabel.setText(hodina);

        spinner.setSelection(Integer.parseInt(den));
    }
}

public void onItemSelected (AdapterView<?> parent, View view, int position, long id)
{
    strItem = parent.getItemAtPosition (position).toString();
    item = parent.getSelectedItemPosition();
}

public void onNothingSelected (AdapterView <?> parent)
{

}

protected void onPause(Bundle savedInstanceState)
{
    mDbHelper.close();
}

public void buttonClicked_uloz(View button) 
{
    getData();

    if (predmet.length()<1)
    {
        Toast.makeText(this, R.string.invalid_nazov, Toast.LENGTH_SHORT).show();
    } else {
        if (odosli.length()>0)
        {
            mDbHelper.updatePredmet(odosli, predmet, poloha, vyucujuci, hodina, obsah, item);
        } else {
            mDbHelper.createPredmet(username, predmet, obsah, poloha, vyucujuci, hodina, 1, item);
        }

        startActivity ();
    }
}

public void dbOperations ()
{
    mDbHelper = new DatabaseOp(this);
    mDbHelper.open();

    Cursor cursor = mDbHelper.fetchPredmet(odosli, 1);
    startManagingCursor(cursor);

    predmet = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_NAZOV));
    obsah = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_POZNAMKA));
    poloha = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_POLOHA));
    vyucujuci = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_VYUCUJUCI));
    hodina = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_HODINA));
    den = cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_DLZKA));
}

public void getData ()
{
    EditText predmetInput = ((EditText)findViewById(R.id.predmet));
    predmet = predmetInput.getText().toString();

    EditText obsahInput = ((EditText)findViewById(R.id.obsah));
    obsah = obsahInput.getText().toString();

    EditText polohaInput = ((EditText)findViewById(R.id.miesto));
    poloha = polohaInput.getText().toString();

    EditText vyucujuciInput = ((EditText)findViewById(R.id.vyucujuci));
    vyucujuci = vyucujuciInput.getText().toString();

    hodina = fmtTime.format(time.getTime());
}

public void chooseTime (View v)
{
    if (odosli.length()>0)
    {
        new TimePickerDialog (PredmetPridajActivity.this, t, Integer.parseInt(hodina.substring(0,2)), Integer.parseInt(hodina.substring(3,5)),true).show();
    } else {
        new TimePickerDialog (PredmetPridajActivity.this, t, time.get(Calendar.HOUR_OF_DAY),time.get(Calendar.MINUTE),true).show();
    }
}

public void updateLabel()
{
    timeLabel.setText(fmtTime.format(time.getTime()));
}

TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener()
{
    public void onTimeSet (TimePicker view, int hourOfDay, int minute)
    {                       
        time.set(Calendar.HOUR_OF_DAY, hourOfDay);
        time.set(Calendar.MINUTE, minute);

        updateLabel();
    }
};

public void startActivity ()
{
    PredmetPridajActivity.this.finish();
}
}
public类PredmetPridajActivity扩展活动实现了MSelectedListener
{
//DateFormat fmtTime=DateFormat.getTimeInstance();
SimpleDataFormat fmtTime=新的SimpleDataFormat(“kk:mm”);
SimpleDateFormat fmtDate2=新的SimpleDateFormat(“yyyy-MM-dd-kk:MM”);//按顺序升级
文本视图时间标签;
日历时间=Calendar.getInstance();
公共静态最终字符串ODOSLI=“ODOSLI”;
私有数据库;
字符串用户名;
字符串odosli=“”;
字符串预匹配;
弦obsah;
弦波洛哈;
字符串vyucujuci;
弦霍迪纳;
弦窝;
国际项目;
弦纹;
EditText tv_nazov;
EditText tv_poznamka;
编辑文本电视;
EditText tv_vyucujuci;
私人纺纱机;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.predmet_pridaj);
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT\u输入\状态\始终\隐藏);
微调器=(微调器)findViewById(R.id.spinner\u dni);
ArrayAdapter=ArrayAdapter.createFromResource(这个,R.array.dni,android.R.layout.simple\u微调器\u下拉菜单\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
spinner.setOnItemSelectedListener(此);
mDbHelper=新数据库操作(此);
mDbHelper.open();
timeLabel=(TextView)findViewById(R.id.time);
updateLabel();
SharedPreferences SharedPrefers=PreferenceManager.getDefaultSharedPreferences(此);
username=sharedPrefs.getString(“prefUsername”、“NULL”);
Intent i=getIntent();
如果(i.hasExtra(奥多斯利))
odosli=i.getStringExtra(odosli);
如果(odosli.length()>0)
{
dbOperations();
tv_nazov=(编辑文本)findViewById(R.id.predmet);
tv_nazov.setText(predmet);
tv_poznamka=(编辑文本)findViewById(R.id.obsah);
tv_poznamka.setText(obsah);
tv_miesto=(编辑文本)findviewbyd(R.id.miesto);
tv_miesto.setText(poloha);
tv_vyucujuci=(编辑文本)findViewById(R.id.vyucujuci);
tv_vyucujuci.setText(vyucujuci);
timeLabel.setText(霍迪纳);
spinner.setSelection(Integer.parseInt(den));
}
}
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id)
{
strItem=parent.getItemAtPosition(position).toString();
item=parent.getSelectedItemPosition();
}
未选择公共无效(AdapterView父级)
{
}
暂停时受保护的void(Bundle savedInstanceState)
{
mDbHelper.close();
}
公共无效按钮单击(查看按钮)
{
getData();
if(predmet.length()0)
{
mDbHelper.UpdatePreMet(奥多斯利、普雷米特、波洛哈、维尤库朱奇、霍迪纳、奥巴、物品);
}否则{
createPredmet(用户名,predmet,obsah,poloha,vyucujuci,hodina,1,item);
}
星触觉();
}
}
公共操作()
{
mDbHelper=新数据库操作(此);
mDbHelper.open();
Cursor Cursor=mDbHelper.fetchPreMet(odosli,1);
开始管理游标(游标);
predmet=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_NAZOV));
obsah=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_POZNAMKA));
poloha=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_poloha));
vyucujuci=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_vyucujuci));
hodina=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_hodina));
den=cursor.getString(cursor.getColumnIndexOrThrow(DatabaseOp.KEY_DLZKA));
}
public void getData()
{
EditText predmetInput=((EditText)findViewById(R.id.predmet));
predmet=predmetInput.getText().toString();
EditText obsahInput=((EditText)findViewById(R.id.obsah));
obsah=obsahInput.getText().toString();
EditText polohaInput=((EditText)findViewById(R.id.miesto));
poloha=polohaInput.getText().toString();
EditText vyucujuciInput=((EditText)findViewById(R.id.vyucujuci));
vyucujuci=vyucujuciInput.getText().toString();
hodina=fmtTime.format(time.getTime());
}
public void chooseTime(视图五)
{
如果(odosli.length()>0)
{
新的TimePickerDialog(PredmetPridajActivity.this,t,Integer.parseInt(hodina.substring(0,2)),Integer.parseInt(hodina.substring(3,5)),true.show();
}否则{
new TimePickerDialog(PredmetPridajActivity.this,t,time.get(Calendar.HOUR\u OF u DAY),time.get(Calendar.MINUTE),true.show();
}
}
公共void updateLabel()
{
timeLabel.setText(fmtTime.format(time.getTime());
}
TimePickerDialog.OnTimeSetListener t=新的TimePickerDialog.OnTimeSetListener()
{
时间集上的公共void(时间选择器视图,整数小时日,整数分钟)
{                       
时间.设置(日历.小时/天,小时/天);
时间。设置(日历。分钟,分钟);
updateLabel();
}
};
公共空间触感()
{
PredmetPridajActivity.this.finish();
}
}

尝试此操作,但此操作会像默认设置一样设置当前时间

SimpleDateFormat sdf = new SimpleDateFormat("hh:ss");
        Date date = null;
        try {
            date = sdf.parse("07:00");
        } catch (ParseException e) {
        }
        Calendar c = Calendar.getInstance();
        c.setTime(date);

        TimePicker picker = new TimePicker(getApplicationContext());
        picker.setCurrentHour(c.get(Calendar.HOUR_OF_DAY));//your default hour
        picker.setCurrentMinute(c.get(Calendar.MINUTE));// your default minute

是否要将默认值设置为timerPicker?我不理解这个问题是的,我需要设置默认值下面查看我的答案如果对你有帮助,请检查下面的答案