Android使用AlertDialog实现弹出菜单

最近又开始捣鼓APP,许多api , class都忘记怎么用了,楼下使用AlertDialog实现个弹出菜单,结果直接crash,查了半天,终于即将,记录一下......

1 实现代码

java 复制代码
  AlertDialog.Builder mBuilder = new AlertDialog.Builder(mContext);//will be crash: android.content.res.Resources$NotFoundException: Resource ID #0x0
        mBuilder = new AlertDialog.Builder(this);
        //填充列表数据
        final String[] items = new String[]{"选项1", "选项2", "选项3"};
        mBuilder.setTitle("选择一项"); // 设置标题
        mBuilder.setItems(items, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(mContext, "clicked:"+ items[which], Toast.LENGTH_SHORT).show();
            }
        });

        mBtnApp6.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               // 创建并显示对话框
                mBuilder.create().show();//界面上mBtnApp6按钮点击后执行dialog显示

            }

        });

2 实现效果

3 增加数据项的效果

4 遇到的错误

  • android.content.res.Resources$NotFoundException: Resource ID #0x0
  • 原因:new AlertDialog.Builder(mContext) , crash
复制代码
       或 new AlertDialog.Builder(getApplicationContext()) , crash
  • 解决办法:new AlertDialog.Builder(this), OK
java 复制代码
--------- beginning of crash
04-18 17:08:40.940  6011  6011 E AndroidRuntime: FATAL EXCEPTION: main
04-18 17:08:40.940  6011  6011 E AndroidRuntime: Process: com.cictech.xlauncher, PID: 6011
04-18 17:08:40.940  6011  6011 E AndroidRuntime: android.content.res.Resources$NotFoundException: Resource ID #0x0
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.ResourcesImpl.getValue(ResourcesImpl.java:237)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.Resources.loadXmlResourceParser(Resources.java:2400)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.content.res.Resources.getLayout(Resources.java:1252)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:530)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertController$AlertParams.createListView(AlertController.java:989)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertController$AlertParams.apply(AlertController.java:965)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AlertDialog$Builder.create(AlertDialog.java:984)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.cictech.xlauncher.MainActivity$7.onClick(MainActivity.java:188)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.performClick(View.java:7448)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.performClickInternal(View.java:7425)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.onKeyUp(View.java:15060)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.KeyEvent.dispatch(KeyEvent.java:2892)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.View.dispatchKeyEvent(View.java:14247)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1954)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1959)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.DecorView.superDispatchKeyEvent(DecorView.java:476)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1861)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.app.Activity.dispatchKeyEvent(Activity.java:4085)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.app.ComponentActivity.superDispatchKeyEvent(ComponentActivity.java:126)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:86)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:144)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:604)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:60)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:3413)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at com.android.internal.policy.DecorView.dispatchKeyEvent(DecorView.java:390)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:5977)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5845)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5340)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5515)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5371)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5572)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5344)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5371)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5344)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5397)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5363)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5548)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:5706)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3179)
04-18 17:08:40.940  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2721)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2712)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3156)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:143)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.MessageQueue.nativePollOnce(Native Method)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.MessageQueue.next(MessageQueue.java:335)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:183)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7695)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
04-18 17:08:40.943  6011  6011 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
04-18 17:08:40.947  2569  2813 D AudioFlinger: mixer(0xabae2080) throttle end: throttle time(45)
04-18 17:08:40.964  2774  3534 W ActivityTaskManager:   Force finishing activity com.cictech.xlauncher/.MainActivity
相关推荐
Sugobet2 小时前
【安卓][Mac/Windows】永久理论免费 无限ip代理池 - 适合临时快速作战
android·tcp/ip·macos·网络安全·渗透测试·ip代理池·接入点
fatiaozhang95276 小时前
创维智能融合终端SK-M424_S905L3芯片_2+8G_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
来来走走6 小时前
Flutter开发 了解Scaffold
android·开发语言·flutter
哆啦A梦的口袋呀8 小时前
Android 底层实现基础
android
闻道且行之8 小时前
Android Studio下载及安装配置
android·ide·android studio
alexhilton8 小时前
初探Compose中的着色器RuntimeShader
android·kotlin·android jetpack
小墙程序员8 小时前
kotlin元编程(二)使用 Kotlin 来生成源代码
android·kotlin·android studio
小墙程序员9 小时前
kotlin元编程(一)一文理解 Kotlin 反射
android·kotlin·android studio
fatiaozhang952710 小时前
创维智能融合终端DT741_移动版_S905L3芯片_安卓9_线刷固件包
android·电视盒子·刷机固件·机顶盒刷机
小林学Android12 小时前
Android四大组件之Activity详解
android