如何解决立即回到主要活动,甚至在第二次活动完成之前
我正在开发一个提醒应用程序。在我的主活动中,有一个浮动动作按钮可以转到第二活动。在第二活动中,用户可以编写文本,设置特定时间来提醒他以及用户可以保存文本当用户单击保存按钮时,该活动将返回到主活动并将文本保存在主活动中。我的问题是用户在第二个活动的时间选择器对话框中设置了时间之后甚至在用户单击保存之前按下该按钮后,活动立即返回到主活动。我尝试了各种已知的方法,并花了很多时间解决此问题。但仍未找到错误。如果有人知道我的问题,请提供帮助。非常感谢您的帮助。
Here is Main Activity Screen Shot. Here is Second Activity Screen Shot.
这是我的密码。
package com.doflamingo.alarm;
public class MainActivity extends AppCompatActivity{
private sqliteDatabase mdatabase;
private AlarmAdapter malarmAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AlarmDBHelper dbHelper = new AlarmDBHelper(this);
mdatabase = dbHelper.getWritableDatabase();
RecyclerView mrecyclerView = findViewById(R.id.recycler_view);
mrecyclerView.setLayoutManager(new linearlayoutmanager(this));
malarmAdapter = new AlarmAdapter(this,getAllItems());
mrecyclerView.setAdapter(malarmAdapter);
FloatingActionButton buttonAddAlarm = findViewById(R.id.button_add_alarm);
buttonAddAlarm.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,AlarmActivity.class);
startActivity(intent);
}
});
}
private Cursor getAllItems(){
return mdatabase.query(
AlarmContract.AlarmEntry.TABLE_NAME,null,AlarmContract.AlarmEntry.COLUMN_TIMESTAMP + " DESC"
);
}
}
public class AlarmActivity extends AppCompatActivity {
private EditText mMessage;
public static final String TAG = "MainActivity";
private TextView mTextView;
private Button mOpenTimePicker;
private Button mSaveAlarm;
private static int id;
private sqliteDatabase mdatabase;
private AlarmAdapter malarmAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm);
mMessage = findViewById(R.id.edittext_message);
mTextView = findViewById(R.id.textView);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close);
setTitle("Add Alarm");
AlarmDBHelper dbHelper = new AlarmDBHelper(this);
mdatabase = dbHelper.getWritableDatabase();
mOpenTimePicker = (Button) findViewById(R.id.button_alarm);
mOpenTimePicker.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
TimePicker();
}
});
Button mbuttonCancel = findViewById(R.id.button_cancel);
mbuttonCancel.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelAlarm();
}
});
mSaveAlarm = findViewById(R.id.button_save_alarm);
mSaveAlarm.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
saveAlarm();
}
});
}
private void saveAlarm(){
String message = mMessage.getText().toString();
String text = mTextView.getText().toString();
if(text.trim().isEmpty()||message.trim().isEmpty()){
Toast.makeText(this,"Please fill the fields",Toast.LENGTH_SHORT).show();
return;
}
ContentValues cv = new ContentValues();
cv.put(AlarmContract.AlarmEntry.COLUMN_TEXT,text );
cv.put(AlarmContract.AlarmEntry.COLUMN_MESSAGE,message);
mdatabase.insert(AlarmContract.AlarmEntry.TABLE_NAME,cv);
malarmAdapter.swapCursor(getAllItems());
Intent intent = new Intent(AlarmActivity.this,MainActivity.class);
startActivity(intent);
}
private Cursor getAllItems(){
return mdatabase.query(
AlarmContract.AlarmEntry.TABLE_NAME,AlarmContract.AlarmEntry.COLUMN_TIMESTAMP + " DESC"
);
}
private void TimePicker(){
final Calendar date;
final Calendar currentDate = Calendar.getInstance();
date = Calendar.getInstance();
new DatePickerDialog(AlarmActivity.this,new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view,int year,int monthOfYear,int dayOfMonth) {
date.set(year,monthOfYear,dayOfMonth);
new TimePickerDialog(AlarmActivity.this,new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view,int hourOfDay,int minute) {
date.set(Calendar.HOUR_OF_DAY,hourOfDay);
date.set(Calendar.MINUTE,minute);
Log.v(TAG,"The choosen one " + date.getTime());
startAlarm(date);
// DateFormat dateFormat = android.text.format.DateFormat.getDateFormat(getApplicationContext());
mTextView.setText((CharSequence) date.getTime());
}
},currentDate.get(Calendar.HOUR_OF_DAY),currentDate.get(Calendar.MINUTE),false).show();
}
},currentDate.get(Calendar.YEAR),currentDate.get(Calendar.MONTH),currentDate.get(Calendar.DATE)).show();
}
private void startAlarm(Calendar c) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
//Passing data
String message = mMessage.getText().toString();
id = (int) System.currentTimeMillis();
Intent intent = new Intent(this,AlertReceiver.class);
intent.putExtra("Message",message);
intent.putExtra("ID",id);
PendingIntent pendingIntent = PendingIntent.getbroadcast(this,id,intent,0);
alarmManager.setExact(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(),pendingIntent);
}
private void cancelAlarm() {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(this,AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getbroadcast(this,0);
alarmManager.cancel(pendingIntent);
mTextView.setText("Alarm canceled");
mMessage.setText("");
}
}
public class AlertReceiver extends broadcastReceiver {
private static String message;
private static int ID;
@Override
public void onReceive(Context context,Intent intent) {
message = intent.getStringExtra("Message");
ID = intent.getIntExtra("ID",0);
NotificationHelper notificationHelper = new NotificationHelper(context);
NotificationCompat.Builder nb = notificationHelper.getChannel1Notification(message);
notificationHelper.getManager().notify(ID,nb.build());
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。