我正在使用日期选择器来选择我的日期,之后,它将以String的形式存储到我的数据库中。
我是否可以知道如何将数据库中的日期作为字符串取出?
这是因为, 我需要做一个摘要页面,将所有数据传递给下一个意图。 意思是,我需要将我的视图中的数据全部传递到我的摘要页面,以便将所有数据都包含在摘要页面中。 这是为了让我能够轻松过滤我们的日期。
例如, 如果日期 - 2014年12月27日,它将显示结果列表。
我快速检查了我的数据,看看能否查看结果。 我在我的summary.java中放了一个datepicker,它位于editText(monthDate)中, 所以如果monthDate = bundleDate(这是我从view all传递的所有数据结果), 它会开始一个新的意图。 否则,它将转到关于页面。
然而,我的代码跳过IF部分, 即使我选择了正确的日期,如果代码而不是else代码,它将通过else。
public class summary extends Activity {
static EditText monthDate;
TextView avgPrice;
TextView exFuel;
TextView avgFC;
Button doneButton;
Button exitButton;
private String bundleID;
private String bundleDate;
private String bundlePrice;
private String bundlePump;
private String bundleCost;
private String bundleOdometer;
private String bundlePreOdometer;
private String bundleFcon;
static final int DATE_DIALOG_ID = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.summary);
monthDate = (EditText)findViewById(R.id.month);
avgPrice = (TextView)findViewById(R.id.showavfPriceTV);
exFuel = (TextView)findViewById(R.id.showexFuelTV);
avgFC = (TextView)findViewById(R.id.showavgFCTV);
doneButton = (Button)findViewById(R.id.doneBTN);
exitButton = (Button)findViewById(R.id.exitBTN);
Bundle takeBundledData = getIntent().getExtras();
// First we need to get the bundle data that pass from the UndergraduateListActivity
bundleID = takeBundledData.getString("clickedID");
bundleDate = takeBundledData.getString("clickedDate");
bundlePrice = takeBundledData.getString("clickedPrice");
bundlePump = takeBundledData.getString("clickedPump");
bundleCost = takeBundledData.getString("clickedCost");
bundleOdometer = takeBundledData.getString("clickedOdometer");
bundlePreOdometer = takeBundledData.getString("clickedpreOdometer");
bundleFcon = takeBundledData.getString("clickedFCon");
Log.d("SUMMARY","bundle : "+ takeBundledData);
monthDate.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// showDialog(DATE_DIALOG_ID);
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getFragmentManager(), "datePicker");
}
});
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (monthDate.equals(bundleDate))
{
Log.d("TRYINGOUT","date : "+ bundleDate);
Intent intent=new Intent(getApplicationContext(),homeActivity.class);
startActivity(intent);
}
else
{
Intent intent=new Intent(getApplicationContext(),about.class);
startActivity(intent);
}
}
});
}
public static class DatePickerFragment extends DialogFragment
implements DatePickerDialog.OnDateSetListener {
public EditText editText;
DatePicker dpResult;
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
//return new DatePickerDialog(getActivity(), (EditSessionActivity)getActivity(), year, month, day);
// Create a new instance of DatePickerDialog and return it
return new DatePickerDialog(getActivity(), this, year, month, day);
}
public void onDateSet(DatePicker view, int year, int month, int day) {
monthDate.setText(String.valueOf(day) + "/"
+ String.valueOf(month + 1) + "/" + String.valueOf(year));
// set selected date into datepicker also
}}}
答案 0 :(得分:1)
它不起作用,因为您尝试将Object
与string
进行比较。 .equals()不检查变量兼容性。您需要做的是从EditText
获取文字并将其与bundleDate
另请注意,EditText.getText()
方法会返回Editable
,因此您需要将其转换为字符串。
将您的情况更改为:
//if(monthDate.equals(bundleDate))
if (monthDate.getText().toString().equals(bundleDate))
{
Log.d("TRYINGOUT","date : "+ bundleDate);
Intent intent=new Intent(getApplicationContext(),homeActivity.class);
startActivity(intent);
}
//rest of your code
并确保您的日期存储在捆绑包中以及您在EditText中输入的日期具有相同的格式,即dd-MM-yyyy
<强> @EDIT 强>
如果你只想比较几个月,并且你很确定存储在bundle中的日期总是具有相同的格式(你提到的dd/MM/yyyy
),那么你可以从日期字符串中提取子字符串
1)通过使用subSequence(start,stop) - 这将返回从字符串的第3和第4位的字符创建的字符串
//if(monthDate.equals(bundleDate))
if (monthDate.getText().toString().equals(bundleDate.subSequence(3,5).toString()))
{
//your code
}
//rest of your code
2)使用String.split()
准备数组以保持拆分结果String[] dateParts = bundleDate.split("/");
- 这将返回3个字符串到您的阵列,第一个将保留一天,第二个将保持一个月,第三个将保持一年
所以在代码中使用第二个(索引从零开始)
String[] dateParts = bundleDate.split("/");
//if(monthDate.equals(bundleDate))
if (monthDate.getText().toString().equals(dateParts[1]))
{
//your code
}
//rest of your code
这应该有效