2016-10-29 5 views
0

以下は私のコードです。私のAPpによれば、それぞれのボタンをクリックすることで、DAteとToDAteから入ることができます。しかし、datepickerダイアログから日付を選択した後、私は日の間にdiffrenceを見つける必要があります。そして、総コストを計算します。しかし、私のFromDateとToDateが同じ日付を取るので、コード全体に何か問題があります。そのため、総コストはゼロのみとして表示されます。私はAndroidが初めてです。この問題を解決するために私を助けてください。日の差分を計算し、それに応じて出力を表示するDatepickerとCalendarの例

public class MainActivity extends AppCompatActivity { 

TextView tv_rentcarheading, tv_costresult; 
Button btndateFrom, btndateTo, btncalculate; 
int CurrentYear1, CurrentMonth1, CurrentDay1, CurrentYear2, CurrentMonth2, CurrentDay2; 
final int rent = 150; 
static final int dialog_id1 = 0, dialog_id2 = 0; 
long n, totalcost; 


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

    tv_rentcarheading = (TextView) findViewById(R.id.tv_rentcar); 
    tv_costresult = (TextView) findViewById(R.id.tv_result); 
    btndateFrom = (Button) findViewById(R.id.btn_fromdate); 
    btndateTo = (Button) findViewById(R.id.btn_todate); 
    btncalculate = (Button) findViewById(R.id.btn_result); 

    tv_costresult.setVisibility(View.INVISIBLE); 

    Calendar calendar1 = Calendar.getInstance(); 

    CurrentYear1 = calendar1.get(Calendar.YEAR); 
    CurrentMonth1 = calendar1.get(Calendar.MONTH); 
    CurrentDay1 = calendar1.get(Calendar.DAY_OF_MONTH); 

    Calendar calendar2 = Calendar.getInstance(); 
    CurrentYear2 = calendar2.get(Calendar.YEAR); 
    CurrentMonth2 = calendar2.get(Calendar.MONTH); 
    CurrentDay2 = calendar2.get(Calendar.DAY_OF_MONTH); 


    showDialogOnButtonClick(); 

    calendar1.set(CurrentYear1, CurrentMonth1, CurrentDay1); 
    calendar2.set(CurrentYear2, CurrentMonth2, CurrentDay2); 

    n = (calendar2.getTimeInMillis() - calendar1.getTimeInMillis()); 
    totalcost = n * rent; 

    btncalculate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      totalcost = n * rent; 
      tv_costresult.setText("The Cost of car from " +CurrentMonth1+"/"+CurrentDay1+"/"+CurrentYear1+" to "+CurrentMonth1+"/"+CurrentDay1+"/"+CurrentYear1+" is "+totalcost); 
      tv_costresult.setVisibility(View.VISIBLE); 
     } 
    }); 
} 


public void showDialogOnButtonClick() 
{ 
    btndateFrom.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(dialog_id1); 
     } 
    }); 

    btndateTo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showDialog(dialog_id2); 
     } 
    }); 
} 


@Override 
protected Dialog onCreateDialog(int id) 
{ 
    if(id == dialog_id1) 
     return new DatePickerDialog(MainActivity.this, setDateListener1, CurrentYear1, CurrentMonth1, CurrentDay1); 


    if(id == dialog_id2) 
     return new DatePickerDialog(MainActivity.this, setDateListener2, CurrentYear2, CurrentMonth2, CurrentDay2); 


    else 
     return null; 
} 


private DatePickerDialog.OnDateSetListener setDateListener1 = new DatePickerDialog.OnDateSetListener() 
{ 
    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) 
    { 
     CurrentYear1 = year; 
     CurrentMonth1 = month + 1; 
     CurrentDay1 = dayOfMonth; 
     Toast.makeText(MainActivity.this, "From Date is " + CurrentMonth1 +"/" + CurrentDay1+ "/" + CurrentYear1, Toast.LENGTH_LONG).show(); 
    } 
}; 


private DatePickerDialog.OnDateSetListener setDateListener2 = new DatePickerDialog.OnDateSetListener() 
{ 
    @Override 
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) 
    { 
     CurrentYear2 = year; 
     CurrentMonth2 = month +1; 
     CurrentDay2 = dayOfMonth; 
     Toast.makeText(MainActivity.this, "From Date is " + CurrentMonth2 +"/" + CurrentDay2+ "/" + CurrentYear2, Toast.LENGTH_LONG).show(); 
    } 
}; 

}

答えて

0

もしbtncalculate onclicklistenerのcalendar1calendar2外部設定されているので、それが結果としてゼロを示しています。 Moveroverでは、カレンダーに設定する前に、CurrentMonth1CurrentMonth2を減らす必要があります。

移動btncalculate.setOnClickListener(...)

CurrentMonth1 = CurrentMonth1 - 1; 
CurrentMonth2 = CurrentMonth2 - 1; 
calendar1.set(CurrentYear1, CurrentMonth1, CurrentDay1); 
calendar2.set(CurrentYear2, CurrentMonth2, CurrentDay2); 

n = (calendar2.getTimeInMillis() - calendar1.getTimeInMillis()); 
n = n/(1000 * 60 * 60 * 24); 
totalcost = n * rent; 
+0

@RamMalhotraの内側にonCreateからのコードのこの部分はあなたのための私の答えは役に立ちましたか?それを試しましたか? – Marat

関連する問題