Java 日历对话框

Java 日历对话框,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

有人能告诉我我做错了什么,它给了我错误的第一个参数类型。找到:“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;
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
        }