android - 应用程序在没有编译错误的情况下崩溃(xxx 已停止)
问题描述
该应用程序在使用Nexus S5
构建版本 24 时运行良好。
我切换到使用 build 23,所以我可以使用File Device Explorer
来检查我的 SQLite 数据库文件。
当我切换回版本 24 时,它开始崩溃,在编译时给了我以下输出:
使用或覆盖已折旧的 API
我注释掉了setTime()
我用来初始化时间的方法,因为它有几个折旧的方法(setCurrentHour
和setCurrentTime
)。
不幸的是,它仍然给我编译消息:
使用或覆盖已折旧的 API
public static final String EXTRA_DATE = "com.bignerdranch.android.criminalintent.time";
private static final String ARG_DATE = "time";
private static final String TAG = "TimePickerFragment";
private TimePicker mTimePicker;
public static TimePickerFragment newInstance(Date date) {
Bundle args = new Bundle();
args.putSerializable(ARG_DATE, date);
TimePickerFragment fragment = new TimePickerFragment();
fragment.setArguments(args); // This adds the 'extra'.
return fragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
View v = LayoutInflater.from(getActivity())
.inflate(R.layout.dialog_time, null);
mTimePicker = (TimePicker) v.findViewById(R.id.dialog_time_picker);
return new AlertDialog.Builder(getActivity())
.setView(v)
.setTitle(R.string.time_picker_title)
.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
{ // TimePicker lacks an initializer, unlike DatePicker.
Date date = (Date) getArguments().getSerializable(ARG_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int initMinute = calendar.get(Calendar.MINUTE);
int initHour = calendar.get(Calendar.HOUR);
//setTime(initHour, initMinute);
}
/*private void setTime(int hour, int minute) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mTimePicker.setHour(hour);
mTimePicker.setMinute(minute);
} else {
mTimePicker.setCurrentHour(hour);
mTimePicker.setCurrentMinute(minute);
}
}*/
@Override
public void onClick(DialogInterface dialog, int which) {
Date date = (Date) getArguments().getSerializable(ARG_DATE);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int day = calendar.get(Calendar.DAY_OF_MONTH);
int minute = mTimePicker.getCurrentMinute();
int hour = mTimePicker.getCurrentHour();
Date newDate = new GregorianCalendar(year, month, day, hour, minute).getTime();
sendResult(Activity.RESULT_OK, newDate);
}
private void sendResult(int resultCode, Date date) {
if (getTargetFragment() == null) {
return;
}
Intent intent = new Intent();
intent.putExtra(EXTRA_DATE, date);
getTargetFragment()
.onActivityResult(getTargetRequestCode(), resultCode, intent);
}
})
.create();
}
}
我预计它不会崩溃,并且我怀疑它与使用模拟早期版本 Android 的模拟器时的最近更新有关。
解决方案
推荐阅读
- python - M1 上的 Python 平台混乱
- .net - 如何获取多个微服务使用的 Nuget 包列表
- ubuntu - Kubernetes CrashLoopBackOff - libtinfo.so 文件太短?
- reactjs - React Hooks - useState 使用在 useEffect 期间设置的另一个钩子变量的结果
- python - 在 Julia 中导入 python 库
- javascript - 遍历 Reactjs 中的状态变量
- c# - 为什么在创建索引后它会显示旧索引中的数据?
- php - 在 php 中获取 {{ var }} 的子串
- elasticsearch - 如何在 ElasticSearch 中展平深度聚合?
- html - 如何使用 URI 接收 jpg 文件作为图像?