import android.content.ContentValues; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.CalendarView; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.util.Calendar; public class readActivity extends AppCompatActivity implements View.OnClickListener{ private CalendarView calendarView; private EditText scheduleInput; private Context context; private Button addSchedule,checkAdd; private String dateToday;//用于记录今天的日期 private MySQLiteOpenHelper mySQLiteOpenHelper; private SQLiteDatabase myDatabase; private TextView mySchedule[] = new TextView[5]; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); //这里不这样的话一进去就设置当天的日程会报错 Calendar time = Calendar.getInstance(); int year = time.get(Calendar.YEAR); int month = time.get(Calendar.MONTH)+1;//注意要+1,0表示1月份 int day = time.get(Calendar.DAY_OF_MONTH); dateToday = year+"-"+month+"-"+day; //还要直接查询当天的日程,这个要放在initView的后面,不然会出问题 queryByDate(dateToday); } private void initView() { mySQLiteOpenHelper = new MySQLiteOpenHelper(this); myDatabase = mySQLiteOpenHelper.getWritableDatabase(); context = this; addSchedule = findViewById(R.id.addSchedule); addSchedule.setOnClickListener(this); checkAdd = findViewById(R.id.checkAdd); checkAdd.setOnClickListener(this); calendarView = findViewById(R.id.calendar); scheduleInput = findViewById(R.id.scheduleDetailInput); calendarView.setOnDateChangeListener(mySelectDate); mySchedule[0] = findViewById(R.id.schedule1); mySchedule[1] = findViewById(R.id.schedule2); mySchedule[2] = findViewById(R.id.schedule3); mySchedule[3] = findViewById(R.id.schedule4); mySchedule[4] = findViewById(R.id.schedule5); for(TextView v:mySchedule){ v.setOnClickListener(this); } } private CalendarView.OnDateChangeListener mySelectDate = new CalendarView.OnDateChangeListener() { @Override public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) { dateToday = year+"-"+(month+1)+"-"+dayOfMonth; Toast.makeText(context, "你选择了:"+dateToday, Toast.LENGTH_SHORT).show(); //得把用别的日期查出来的日程删除并将其隐藏 for(TextView v:mySchedule){ v.setText(""); v.setVisibility(View.GONE); } queryByDate(dateToday); } }; //根据日期查询日程 private void queryByDate(String date) { //columns为null 查询所有列 Cursor cursor = myDatabase.query(getString(R.string.string), null, "time=?", new String[]{date}, null, null, null); if(cursor.moveToFirst()){ int scheduleCount = 0; do{ String aScheduleDetail = cursor.getString(cursor.getColumnIndex("scheduleDetail")); mySchedule[scheduleCount].setText("日程"+(scheduleCount+1)+":"+aScheduleDetail); mySchedule[scheduleCount].setVisibility(View.VISIBLE); scheduleCount++; //一定要有这句 不然TextView不够多要数组溢出了 if(scheduleCount >= 5) break; }while (cursor.moveToNext()); } cursor.close(); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.addSchedule: addMySchedule(); break; case R.id.checkAdd: checkAddSchedule(); break; case R.id.schedule1:case R.id.schedule2:case R.id.schedule3:case R.id.schedule4:case R.id.schedule5: editSchedule(v); break; } } private void editSchedule(View v) { Intent intent = new Intent(readActivity.this, EditScheduleActivity.class); String sch = ((TextView) v).getText().toString().split(":")[1]; intent.putExtra("schedule",sch); startActivity(intent); } private void checkAddSchedule() { ContentValues values = new ContentValues(); //第一个参数是表中的列名 values.put("scheduleDetail",scheduleInput.getText().toString()); values.put("time",dateToday); myDatabase.insert("schedules",null,values); scheduleInput.setVisibility(View.GONE); checkAdd.setVisibility(View.GONE); queryByDate(dateToday); //添加完以后把scheduleInput中的内容清除 scheduleInput.setText(""); } private void addMySchedule() { scheduleInput.setVisibility(View.VISIBLE); checkAdd.setVisibility(View.VISIBLE); } }
android 开发 无报错后闪退
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- 像向日葵一样~ 2021-06-24 09:20关注
看看有没有在AndroidManifest.xml文件中注册,或者检查下布局文件,也有可能是数据库的问题
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 windows2019+nginx+php耗时久
- ¥15 labelme打不开怎么办
- ¥35 按照图片上的两个任务要求,用keil5写出运行代码,并在proteus上仿真成功,🙏
- ¥15 免费的电脑视频剪辑类软件如何盈利
- ¥30 MPI读入tif文件并将文件路径分配给各进程时遇到问题
- ¥15 pycharm中导入模块出错
- ¥20 Ros2 moveit2 Windows环境配置,有偿,价格可商议。
- ¥15 有关“完美的代价”问题的代码漏洞
- ¥15 请帮我看一下这个简易化学配平器的逻辑有什么问题吗?
- ¥15 暴力法无法解出,可能要使用dp和数学知识