crosswalk使用--AlertDialog.Builder弹窗--返回键弹窗、prompt弹窗

1.遗留问题:弹出窗口关闭后整个屏幕亮度非常高,一段时间后才会恢复。

2.遇到的问题:使用 import android.support.v7.app.AlertDialog 弹窗就闪退。

 

返回键
通过重写dispatchKeyEvent函数修改返回键事件

 

package com.example.lyj.crosswalk;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.KeyEvent;

import org.xwalk.core.XWalkView;

public class MainActivity extends Activity{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AndroidBug5497Workaround.assistActivity(this);

        XWalkView xWalkView = findViewById(R.id.web);
        xWalkView.loadUrl("file:///android_asset/index.html");
    }
    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getKeyCode() == KeyEvent.KEYCODE_BACK 
                && 0 == event.getRepeatCount() 
                && event.getAction() == KeyEvent.ACTION_DOWN){
            new AlertDialog.Builder(MainActivity.this)
                    .setTitle("退出确定")
                    .setMessage("是否确定退出?")
                    .setPositiveButton("确定退出", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                            finish();
                        }
                    })
                    .setNegativeButton("取消退出", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialogInterface, int i) {
                        }
                    })
                    .create()
                    .show();
            return false;
        }
        return super.dispatchKeyEvent(event);
    }
}

  

 
prompt监听
 重写onJsPrompt函数,自定义弹出窗口样式和内容
        xWalkView.setUIClient(new XWalkUIClient(xWalkView){
            @Override
            public boolean onJsPrompt(XWalkView view, String url, String message, final String defaultValue, final XWalkJavascriptResult result) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                final EditText editText = new EditText(MainActivity.this);
                Uri uri = Uri.parse(message);
                editText.setText(defaultValue);
                if(uri.getAuthority().equals("serverAddr")) {
                    builder.setTitle("请输入服务器地址").setView(editText);
                } else if(uri.getAuthority().equals("operator")) {
                    builder.setTitle("请输入运营商信息").setView(editText);
                } else {
                    builder.setTitle("error");
                }
                builder.setPositiveButton("输入确认", new DialogInterface.OnClickListener() {
                    @Override   //确认键处理
                    public void onClick(DialogInterface dialogInterface, int i) {
                        result.confirmWithResult(editText.getText().toString());
                    }
                });
                builder.setNegativeButton("取消输入", new DialogInterface.OnClickListener() {
                    @Override   //取消键处理
                    public void onClick(DialogInterface dialogInterface, int i) {
                        result.confirmWithResult(defaultValue);
                    }
                });
                builder.setOnKeyListener(new DialogInterface.OnKeyListener() {
                    @Override   //返回键处理
                    public boolean onKey(DialogInterface dialogInterface, int i, KeyEvent keyEvent) {
                        if(KeyEvent.KEYCODE_BACK == i)
                            return true;    //返回键拦截
                        return false;       //其他键直接返回
                    }
                });
                builder.show();
                return true;
            }
        });

  

转载于:https://www.cnblogs.com/liuyj-vv/p/9662047.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值