Java 日历对话框
有人能告诉我我做错了什么,它给了我错误的第一个参数类型。找到:“android.widget.EditText”,必需:“java.lang.String” 用布尔表示行为准则 包com.example.soultaker.multicolumnJava 日历对话框,java,android,Java,Android,有人能告诉我我做错了什么,它给了我错误的第一个参数类型。找到:“android.widget.EditText”,必需:“java.lang.String” 用布尔表示行为准则 包com.example.soultaker.multicolumn import android.app.DatePickerDialog; import android.app.Dialog; import android.database.Cursor; import android.os.Bundle; impo
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.Calendar;
import java.util.*;
import static com.example.soultaker.multicolumn.Constants.COL0;
import static com.example.soultaker.multicolumn.Constants.COL2;
import static com.example.soultaker.multicolumn.Constants.COL3;
public class AddActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {
private DatabaseHelper mylogsDB;
private Button btn_save, btn, btn_edit;
private String spinnerSelectedItem;
int year_x, month_x, day_x;
static final int DIALOG_ID = 0;
private EditText etHours;
private EditText etID;
private Spinner etShift;
private ArrayList<HashMap<String, String>> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add);
etHours = (EditText) findViewById(R.id.editText);
etShift = (Spinner) findViewById(R.id.spinner);
etID = (EditText) findViewById(R.id.etID);
btn = (Button) findViewById(R.id.btn_choose_date);
btn_save = (Button) findViewById(R.id.btn_save);
btn_edit = (Button) findViewById(R.id.btn_edit);
mylogsDB = new DatabaseHelper(this);
ListView listView = (ListView) findViewById(R.id.listView1);
final Calendar cal = Calendar.getInstance();
year_x = cal.get(Calendar.YEAR);
month_x = cal.get(Calendar.MONTH);
day_x = cal.get(Calendar.DAY_OF_MONTH);
addData();
UpdateData();
saveData();
showDialogOnButtonClick();
//populate an ArrayList<String> from the database and then view it
ArrayList<String> theList = new ArrayList<>();
Cursor data = mylogsDB.showData();
if(data.getCount() == 0){
Toast.makeText(this, "Δεν υπάρχουν καταχωρίσεις",Toast.LENGTH_LONG).show();
}else{
while(data.moveToNext()){
theList.add(data.getString(1));
ListAdapter listAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,theList);
listView.setAdapter(listAdapter);
}
}
}
public void showDialogOnButtonClick() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
}
protected Dialog onCreateDialog(int id) {
if (id == DIALOG_ID)
return new DatePickerDialog(this, dpickerListener, year_x, month_x, day_x);
return null;
}
private DatePickerDialog.OnDateSetListener dpickerListener
= new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
year_x = year;
month_x = monthOfYear + 1;
day_x = dayOfMonth;
Toast.makeText(AddActivity.this, day_x + "." + month_x + "." + year_x, Toast.LENGTH_LONG).show();
}
};
public void saveData() {
btn_save.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v) {
addData();
}
}
);
// Spinner click listener
etShift.setOnItemSelectedListener(this);
// Spinner Drop down elements
List<String> categories = new ArrayList<>();
categories.add("Πρωί");
categories.add("Μεσημέρι");
categories.add("Νύχτα");
// Creating adapter for spinner
ArrayAdapter<String> dataAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_item, categories);
// Drop down layout style - list view with radio button
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
// attaching data adapter to spinner
etShift.setAdapter(dataAdapter);
}
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// On selecting a spinner item
spinnerSelectedItem = parent.getItemAtPosition(position).toString();
// Showing selected spinner item
Toast.makeText(parent.getContext(), "Έχετε επιλέξει: " + spinnerSelectedItem, Toast.LENGTH_SHORT).show();
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
private void addData() {
String hours = etHours.getText().toString();
//spinnerSelectedItem should have a value
if (!etHours.equals("") && !spinnerSelectedItem.equals("")) {
boolean insertData = mylogsDB.addData(etHours, spinnerSelectedItem);
if (insertData) {
Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show();
}
} else {
//do something
}
ListView listView = (ListView) findViewById(R.id.listView1);
list = new ArrayList<HashMap<String, String>>();
HashMap<String, String> temp = new HashMap<String, String>();
temp.put(COL0, "");
temp.put(COL2, "");
temp.put(COL3, "");
list.add(temp);
HashMap<String, String> temp2 = new HashMap<String, String>();
temp2.put(COL0, "");
temp2.put(COL2, "");
temp2.put(COL3, "");
list.add(temp2);
HashMap<String, String> temp3 = new HashMap<String, String>();
temp3.put(COL0, "");
temp3.put(COL2, "");
temp3.put(COL3, "");
list.add(temp3);
ListViewAdapters adapter = new ListViewAdapters(this, list);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
int pos = position + 1;
Toast.makeText(AddActivity.this, Integer.toString(pos) + " Clicked", Toast.LENGTH_SHORT).show();
}
});
}
private void UpdateData(){
btn_edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int temp = etID.getText().toString().length();
if (temp > 0) {
boolean update = mylogsDB.updateData(etID.getText().toString(),
etHours.getText().toString(), etShift.getSelectedItem().toString());
if (update) {
Toast.makeText(AddActivity.this, "Successfully Updated Data!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(AddActivity.this, "Something Went Wrong :(.", Toast.LENGTH_LONG).show();
}
} else {
Toast.makeText(AddActivity.this, "You Must Enter An ID to Update :(.", Toast.LENGTH_LONG).show();
}
}
});
}
}
出现问题的是这条线吗?
尝试将其更改为以下内容:
boolean insertData = false;
if(etHours != null && !etHours.isEmpty())
insertData = mylogsDB.addData(etHours.getText().toString(), spinnerSelectedItem);
如果每次访问etHours时都会出现NullPointerException,那么最好检查XML,或者至少记录etHours以确保其正确性。试试这个
private void addData() {
String hours = etHours.getText().toString();
//spinnerSelectedItem should have a value
if (!hours.equals("") && !spinnerSelectedItem.equals("")) {
boolean insertData = mylogsDB.addData(hours, spinnerSelectedItem);
if (insertData) {
Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show();
}
} else {
//do something
}
mylogsDB.addDataetHours,spinnerSelectedItem-看起来您希望将hours作为第一个参数,而不是addData中的etHours.hours而不是etHours!我用etHours更改了小时数,但现在它给了我另一个错误,即变量etHours可能尚未初始化。在上面的一行中,我调用字符串。我是否弄乱了顺序?这只是一个警告。您正在onCreate中初始化etHours,因此只要操作正确,您就应该可以了。@Kostaskustoulidis这是因为您的etHours为空。无论如何,我添加了一些空检查代码。
boolean insertData = false;
if(etHours != null && !etHours.isEmpty())
insertData = mylogsDB.addData(etHours.getText().toString(), spinnerSelectedItem);
private void addData() {
String hours = etHours.getText().toString();
//spinnerSelectedItem should have a value
if (!hours.equals("") && !spinnerSelectedItem.equals("")) {
boolean insertData = mylogsDB.addData(hours, spinnerSelectedItem);
if (insertData) {
Toast.makeText(AddActivity.this, "Η αποθήκευση ολοκληρώθηκε επιτυχώς.", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(AddActivity.this, "Ώχ,Κάτι πήγε στραβά.", Toast.LENGTH_LONG).show();
}
} else {
//do something
}