志不强者智不达,言不信者行不果。这篇文章主要讲述无法添加窗口 - 令牌android.os.BinderProxy@42824无效;
你的活动在运行吗?相关的知识,希望能为你提供帮助。
【无法添加窗口 - 令牌android.os.BinderProxy@42824无效;
你的活动在运行吗()】我有一个带有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上有错误点,这是截图。
文章图片
答案问题可能是上下文在对话框显示时被破坏了。这可以像这样避免:
if(!((Activity) context).isFinishing())
{
//show dialog
}
另一答案如果在定义活动时在
AndroidManifest.xml
中添加了以下行android:noHistory="true"
您在
AndroidManifest.xml
文件中定义的活动应如下所示<
activity
android:name=".Signup"
android:label="@string/title_activity_signup"
android:parentActivityName=".LoginSignup"
android:screenOrientation="portrait"
android:theme="@style/AppTheme.NoActionBar">
<
meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="https://www.songbingjia.com/android/com.yourpackage.LoginSignup" />
推荐阅读
- 带有自定义图标的applescript显示对话框
- 如何在Symfony 3中使用SnappyBundle(wkhtmltopdf)从HTML创建PDF
- PHPMyAdmin MySQL错误(列”mycolumnname”不能为FULLTEXT索引的一部分)
- 如何自动在PHP中轻松生成带有logo的QR代码
- 使用Symfony 3中的套接字使用PHP创建不可知的实时聊天
- 如何在Windows中编辑和添加环境变量以方便命令行访问
- 如何在Symfony 3中创建和执行自定义控制台命令
- 如何使用C#Winforms和XAMPP连接到MySQL
- 在Symfony 3中使用FormType创建一个简单的联系表单