Java 应用程序警报导致奇怪的错误,直到我按下后退按钮
我的应用程序中有一个警报,每10分钟通知我一次。它运行良好,但每当警报通知我,我的应用程序名称将显示为一个框在屏幕中部,我不能按下任何东西,直到我按下后退按钮。真奇怪 这是我的代码:Java 应用程序警报导致奇怪的错误,直到我按下后退按钮,java,android,alarm,android-alarms,alarms,Java,Android,Alarm,Android Alarms,Alarms,我的应用程序中有一个警报,每10分钟通知我一次。它运行良好,但每当警报通知我,我的应用程序名称将显示为一个框在屏幕中部,我不能按下任何东西,直到我按下后退按钮。真奇怪 这是我的代码: // Alert Code final AlertDialog alertDialog = new AlertDialog.Builder(this).create(); alertDialog.setTitle("Confirmation"); alertDialog.setMes
// Alert Code
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Confirmation");
alertDialog.setMessage("Are you sure you want to send this report?");
run(gotDataS);
// Timer Code
pendingIntent = PendingIntent.getService(CreateNewForm_3.this, 0,
new Intent(NewForm_3.this, MyAlarmService.class), 0);
Send.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
alertDialog.setButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Toast.makeText(NewForm_3.this, "Sent", 0)
.show();
long firstTime = SystemClock.elapsedRealtime();
am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime + 10 * 1000, 30 * 1000, pendingIntent);
// firstTime Will be the current_time + ( 10 * 60 * 1000) =)
// 10* 1000 will be (10 * 60 * 1000)
new Handler().postDelayed(new Runnable() {
public void run() {
bCancel.performClick();
}
}, (30 * 1000));
// ( 30 * 1000) will be firstTime + ( 2- duration)
Intent toRecentCases = new Intent(CreateNewForm_3.this,
LMPActivity.class);
startActivity(toRecentCases);
}
});
alertDialog.setButton2("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// Here you can add functions
}
});
alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog.show();
}
});
bCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
am.cancel(pendingIntent);
}
});
//For Notification -3-
final AlertDialog alertDialog3 = new AlertDialog.Builder(this).create();
alertDialog3.setTitle("Confirmation");
alertDialog3.setMessage("Are you sure you want to quite?");
// Press cancel button it will move user to actvity p
Cancelb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
alertDialog3.setButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Intent toRecentCases = new Intent(NewForm_3.this,
LMPActivity.class);
startActivity(toRecentCases);
}
});
alertDialog3.setButton2("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// Doing nothing!
}
});
alertDialog3.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog3.show();
}
});
}
<activity
android:name=".ShowingDialog"
android:theme="@android:style/Theme.Dialog" />
显示对话活动
public class ShowingDialog extends Activity {
boolean b;
String CancelMsg;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//For Notification -1-
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Confirmation");
alertDialog.setMessage("Do you really want it?");
// For Notification -2-
final AlertDialog alertDialog2 = new AlertDialog.Builder(this).create();
alertDialog2.setTitle("Confirmation");
alertDialog2.setMessage("Are you sure you want it?");
alertDialog.setButton("yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent intent= new Intent(ShowingDialog.this,MyPage.class);
startActivity(intent);
;
}
});
alertDialog.setButton2("no",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
alertDialog2.setButton("yes", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Here you can add functions
// Sending a Message to server that the plaintiff found the case
// For Sending SMS with cancel Request
// Getting Case_ID + putting it inside CancelMsg
CancelMsg = "Case_ID cancel";
if (!b) {
try {
sendSMS("5556", CancelMsg);
Toast.makeText(ShowingDialog.this, "Sent", Toast.LENGTH_LONG)
.show();
} catch (Exception e) {
// TODO Auto-generated catch block
Toast.makeText(ShowingDialog.this, e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}
});
alertDialog2.setButton2("no", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
// Here you can add functions
// Do nothing
}
});
alertDialog2.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog2.show();
}
});
alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog.show();
}
public void sendSMS(String number, String msg) throws Exception {
if (!b) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(number, null, msg, null, null);
}
b = true;
}
}
在清单中:
// Alert Code
final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle("Confirmation");
alertDialog.setMessage("Are you sure you want to send this report?");
run(gotDataS);
// Timer Code
pendingIntent = PendingIntent.getService(CreateNewForm_3.this, 0,
new Intent(NewForm_3.this, MyAlarmService.class), 0);
Send.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
alertDialog.setButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Toast.makeText(NewForm_3.this, "Sent", 0)
.show();
long firstTime = SystemClock.elapsedRealtime();
am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
firstTime + 10 * 1000, 30 * 1000, pendingIntent);
// firstTime Will be the current_time + ( 10 * 60 * 1000) =)
// 10* 1000 will be (10 * 60 * 1000)
new Handler().postDelayed(new Runnable() {
public void run() {
bCancel.performClick();
}
}, (30 * 1000));
// ( 30 * 1000) will be firstTime + ( 2- duration)
Intent toRecentCases = new Intent(CreateNewForm_3.this,
LMPActivity.class);
startActivity(toRecentCases);
}
});
alertDialog.setButton2("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// Here you can add functions
}
});
alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog.show();
}
});
bCancel.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
am.cancel(pendingIntent);
}
});
//For Notification -3-
final AlertDialog alertDialog3 = new AlertDialog.Builder(this).create();
alertDialog3.setTitle("Confirmation");
alertDialog3.setMessage("Are you sure you want to quite?");
// Press cancel button it will move user to actvity p
Cancelb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
alertDialog3.setButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Intent toRecentCases = new Intent(NewForm_3.this,
LMPActivity.class);
startActivity(toRecentCases);
}
});
alertDialog3.setButton2("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// Doing nothing!
}
});
alertDialog3.setIcon(android.R.drawable.ic_dialog_alert);
alertDialog3.show();
}
});
}
<activity
android:name=".ShowingDialog"
android:theme="@android:style/Theme.Dialog" />
您似乎没有重载back语句,因此,当您按下back按钮时,您将返回到后台堆栈。Android文档中有关于这方面的更多信息:
实际上我不明白?你能给我提供密码吗?我怎么做?我们的工作不是帮助你。礼貌会给你带来更多的帮助,而不是对那些给你建议的人大喊大叫。你不会发现有很多人可以编写代码来解决这个问题(尤其是在我们面前没有所有的代码可以处理的情况下)。我的理论是,你的应用程序正在重新启动,你的应用程序中的方框是某种启动屏幕(我假设方框和名称是你创建的某个屏幕)。我之前链接的后台堆栈只是向您显示,通过回击退出应用程序,这就是回击关闭对话框的原因。当MyAlarmService从您的警报接收到意图时,它会做什么?它向我显示“显示对话框”活动,请检查updatea屏幕截图将有助于更好地理解..所以您的问题是看不到按钮?或者你可以看到它们,但不能按它们?请用截图来了解你的问题