2016-03-08 12 views
0

У меня есть две переменные строки, которые называются clockedin и clockedout. Я помещаю их в общие настройки, и теперь я пытаюсь вызвать их и преобразовать их целые числа, чтобы я мог вычитать часы с тактовой частотой часов с часами, чтобы узнать, сколько часов было сработано.вычесть две строки времени

public void onCheckedChanged(CompoundButton compoundButton, boolean b){ 
    if(b){ 
     Calendar c = Calendar.getInstance(); 
     System.out.println(c.getTime()); 
     SimpleDateFormat df = new SimpleDateFormat("hh:mm a"); 
     String formattedDate = df.format(c.getTime()); 
     TextView clockedin = (TextView)findViewById(R.id.clockedin); 
     clockedin.setText(formattedDate); 






     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("toggleButton", tb.isChecked()); 
     editor.commit(); 

     SharedPreferences sharedPreferences2=getSharedPreferences("MyData", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor1= sharedPreferences2.edit(); 
     editor1.putString("clockedin", formattedDate); 
     editor1.commit(); 
    } 
    else { 
     Calendar c = Calendar.getInstance(); 
     System.out.println(c.getTime()); 
     SimpleDateFormat df = new SimpleDateFormat("hh:mm a"); 
     String formattedDate = df.format(c.getTime()); 
     TextView clockedout = (TextView)findViewById(R.id.clockedout); 
     clockedout.setText(formattedDate); 

     SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = sharedPreferences.edit(); 
     editor.putBoolean("toggleButton", false); 
     editor.commit(); 

     SharedPreferences sharedPreferences2=getSharedPreferences("MyData2", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor1= sharedPreferences2.edit(); 
     editor1.putString("clockedout", clockedout.getText().toString()); 
     editor1.commit(); 

     SharedPreferences sharedPreferences1 = getSharedPreferences("MyData", Context.MODE_PRIVATE); 
     String clockedin =sharedPreferences1.getString("clockedin", DEFAULT); 


}} 

Мой метод преобразования:

public void onClickButtonListener2(){ 
Button button2; 
button2 = (Button) findViewById(R.id.calctotal); 
button2.setOnClickListener(
     new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Date date = null; 
       Date date2 = null; 


       SharedPreferences sharedPreferences1 = getSharedPreferences("MyData", Context.MODE_PRIVATE); 
       String clockedin =sharedPreferences1.getString("clockedin", DEFAULT); 

       SharedPreferences sharedPreferences2 = getSharedPreferences("MyData2", Context.MODE_PRIVATE); 
       String clockedout =sharedPreferences2.getString("clockedout",DEFAULT); 

       DateFormat outFormat = new SimpleDateFormat("hh:mm"); 
       try { 
        date = outFormat.parse(String.valueOf(clockedout)); 
        date2 = outFormat.parse(clockedin); 
       }catch (ParseException e){ 
        e.printStackTrace(); 
       } 
       if (date2.before(date)){ 
        long diffMs = date.getTime() - date2.getTime(); 
        long diffSec = diffMs/1000; 
        long min = diffSec/60; 
        double hour = (double)min/60; 
        double hourA = Math.round(hour *100.0)/100.0; 
        TextView totalhours=(TextView)findViewById(R.id.totalhours); 
        totalhours.setText((int) hourA); 

       } 

      } 
     }); 
     } 

Мой журнал attatched enter image description here

+1

Не вы просто спросить это около 5 часов назад? – ctst

+0

да, но теперь у меня есть журнал – user4792835

ответ

1

totalhours.setText ((INT) hourA);

Должно быть: totalhours.setText (String.valueOf (hourA)); ИЛИ totalhours.setText ("" + hourA);

Если вы вызываете setText с целым числом, он будет искать строковый ресурс с этим идентификатором.

+0

спасибо. но теперь у меня другая проблема. по какой-то причине sharedpreferences работает неправильно. Предполагается сохранить время, когда кнопка нажата и сохранит это время. Однако изменения в зависимости от того, когда пользователь получает активность. – user4792835

0

Почему вы храните форматированную дату вместо длинного значения из Calendar.getInstance()? Просто сделайте

if(..){ 
    editor.putLong("dateIn", Calendar.getInstance().getTimeInMillis()); 
} 
else{ 
    editor.putLong("dateIn", Calendar.getInstance().getTimeInMillis()); 
} 

, а затем вычитать их как тоскует

long dateIn = sharedPreferences.getLong("dateIn", defaultValueIn); 
long dateOut = sharedPreferences.getLong("dateOut", defaultValueOut); 
long difference = dateOut - dateIn; 
int hoursBetween = difference/(1000*60*60) 

И теперь вы просто сохранили себя две страницы кода

Смежные вопросы