gpt4 book ai didi

android - 无法添加窗口—— token android.os.BinderProxy@42824 无效;你的 Activity 在运行吗?

转载 作者:太空宇宙 更新时间:2023-11-03 10:41:43 24 4
gpt4 key购买 nike

我有一个带有 pendingIntent 的短信发送器,一旦发送短信,它就会打开一个对话框。这是来自 SMS 发件人的代码

public final void sendSmsByManager(final String code) 
{
progressDialog = new ProgressDialog(Registration.this);
progressDialog.setTitle("Please wait");
progressDialog.setMessage("Sending SMS Verification Code...");
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();

String sent = "SMS_SENT";

PendingIntent sentPI = PendingIntent.getBroadcast(Registration.this,

2, new Intent(sent), 0);

Registration.this.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context arg0, Intent arg1) {

switch (getResultCode())

{

case Activity.RESULT_OK:

// Toast.makeText(getBaseContext(), "SMS sent",

// Toast.LENGTH_SHORT).show();
progressDialog.dismiss();
dialog_confirm(code,Registration.this);
// saveRegistration();

break;

case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
progressDialog.dismiss();

Toast.makeText(getApplicationContext(), "Generic failure",

Toast.LENGTH_SHORT).show();

// Toast.makeText(getApplicationContext(), "code" + code,

// Toast.LENGTH_SHORT).show();

status = "Generic failure";

break;

case SmsManager.RESULT_ERROR_NO_SERVICE:
progressDialog.dismiss();
Toast.makeText(
myContext,
"No service. Check mobile network connection." + ""
+ "",

Toast.LENGTH_SHORT).show();

status = "No service";

break;

case SmsManager.RESULT_ERROR_NULL_PDU:
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Null PDU",

Toast.LENGTH_SHORT).show();

status = "Null PDU";

break;

case SmsManager.RESULT_ERROR_RADIO_OFF:
progressDialog.dismiss();
Toast.makeText(getApplicationContext(), "Radio off",

Toast.LENGTH_SHORT).show();

status = "Radio off";

break;

}

}

}, new IntentFilter(sent));

SmsManager sms = SmsManager.getDefault();

sms.sendTextMessage(txt_mobileno.getText().toString(), null, code,
sentPI, null);

}

然后我从 Activity.RESULT_OK 调用对话框

 public void dialog_confirm(final String SMSCode,Context context) 
{

dialog = new Dialog(context);


dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.dialog_confirm);

final EditText txt_code = (EditText) dialog.findViewById(R.id.txt_code);
Button btn_add = (Button) dialog.findViewById(R.id.btn_confirm);
Button btn_cancel = (Button) dialog.findViewById(R.id.btn_cancel);

btn_add.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
String code = txt_code.getText().toString();

if (code.equals(SMSCode)) {
match = true;
// save
if (Constants.ID != 0) {

updateRegistration();

} else {

saveRegistration();

}

dialog.dismiss();

} else {
DialogUtil.createErrorDialog(Registration.this, "Registration Error",
"SMS verification code does not match!").show();

}

}

});

btn_cancel.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
dialog.dismiss();
}
});

dialog.setCancelable(false);
dialog.show();
}

dialog.show 上的错误点这是屏幕截图。 enter image description here

最佳答案

问题可能是上下文在本应显示对话框时被破坏了。这可以这样避免:

if(!((Activity) context).isFinishing())
{
//show dialog
}

关于android - 无法添加窗口—— token android.os.BinderProxy@42824 无效;你的 Activity 在运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32352124/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com