如何使用 FragmentManager 替代已弃用的 showDialog

2024-02-03

我正在使用 displayDialog 方法...它有效,但 Eclipse 向我显示了一个警告:

showDialog(showRetry ? 1 : 0);

Method:

   private void displayDialog(final boolean showRetry) {
                    mHandler.post(new Runnable() {
                        public void run() {
                            setProgressBarIndeterminateVisibility(false);
                            showDialog(showRetry ? 1 : 0);
                        }
                    });
                } 

搜索我发现了类似的问题,其中看到现在有片段管理器可以用来避免这个问题,但我不明白如何在我的特定场景中解决这个问题,保持与 Froyo 和 GingerBread 的复古兼容性。

你可以帮帮我吗?

完整的类代码是:

 public class Home extends Activity {
        private static final String BASE64_PUBLIC_KEY = "mykeywithoutspaces";

        // Generate your own 20 random bytes, and put them here.
        private static final byte[] SALT = new byte[] {
            -00, 00, 30, -2, -58, -57, 00, -64, 51, 32, -95, -45, 13, -6, -36, -15, -11, 32, -64,
            89
        };

        private TextView mStatusText;
        private Button mCheckLicenseButton;

        private LicenseCheckerCallback mLicenseCheckerCallback;
        private LicenseChecker mChecker;
        // A handler on the UI thread.
        private Handler mHandler;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
            setContentView(R.layout.main);

            mStatusText = (TextView) findViewById(R.id.status_text);
buttonNewDoc = (ImageButton) findViewById(R.id.btNewDoc);
        buttonNewDoc.setOnClickListener(mNewDoc);
            mCheckLicenseButton = (Button) findViewById(R.id.check_license_button);
            mCheckLicenseButton.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    doCheck();
                }
            });

            mHandler = new Handler();

            // Try to use more data here. ANDROID_ID is a single point of attack.
            String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID);

            // Library calls this when it's done.
            mLicenseCheckerCallback = new MyLicenseCheckerCallback();
            // Construct the LicenseChecker with a policy.
            mChecker = new LicenseChecker(
                this, new ServerManagedPolicy(this,
                    new AESObfuscator(SALT, getPackageName(), deviceId)),
                BASE64_PUBLIC_KEY);
            doCheck();
        }

        protected Dialog onCreateDialog(int id) {
            final boolean bRetry = id == 1;
            return new AlertDialog.Builder(this)
                .setTitle(R.string.unlicensed_dialog_title)
                .setMessage(bRetry ? R.string.unlicensed_dialog_retry_body : R.string.unlicensed_dialog_body)
                .setPositiveButton(bRetry ? R.string.retry_button : R.string.buy_button, new DialogInterface.OnClickListener() {
                    boolean mRetry = bRetry;
                    public void onClick(DialogInterface dialog, int which) {
                        if ( mRetry ) {
                            doCheck();
                        } else {
                            Intent marketIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(
                                    "http://market.android.com/details?id=" + getPackageName()));
                                startActivity(marketIntent);                        
                        }
                    }
                })
                .setNegativeButton(R.string.quit_button, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        finish();
                    }
                }).create();
        }

        private void doCheck() {
buttonNewDoc.setEnabled(false);
            mCheckLicenseButton.setEnabled(false);
            setProgressBarIndeterminateVisibility(true);
            mStatusText.setText(R.string.checking_license);
            mChecker.checkAccess(mLicenseCheckerCallback);
        }

        private void displayResult(final String result) {
            mHandler.post(new Runnable() {
                public void run() {
                    mStatusText.setText(result);
                    setProgressBarIndeterminateVisibility(false);
                    mCheckLicenseButton.setEnabled(true);
                }
            });
        }

        private void displayDialog(final boolean showRetry) {
            mHandler.post(new Runnable() {
                public void run() {
                    setProgressBarIndeterminateVisibility(false);
                    showDialog(showRetry ? 1 : 0);
                }
            });
        }    

        private class MyLicenseCheckerCallback implements LicenseCheckerCallback {
            public void allow(int policyReason) {
                if (isFinishing()) {
                    // Don't update UI if Activity is finishing.
                    return;
                }

                // Should allow user access.
                displayResult(getString(R.string.allow));
buttonNewDoc.setEnabled(false);
            }

            public void dontAllow(int policyReason) {
                if (isFinishing()) {
                    // Don't update UI if Activity is finishing.
                    return;
                }
                displayResult(getString(R.string.dont_allow));
                // Should not allow access. In most cases, the app should assume
                // the user has access unless it encounters this. If it does,
                // the app should inform the user of their unlicensed ways
                // and then either shut down the app or limit the user to a
                // restricted set of features.
                // In this example, we show a dialog that takes the user to Market.
                // If the reason for the lack of license is that the service is
                // unavailable or there is another problem, we display a
                // retry button on the dialog and a different message.
                displayDialog(policyReason == Policy.RETRY);
            }

            public void applicationError(int errorCode) {
                if (isFinishing()) {
                    // Don't update UI if Activity is finishing.
                    return;
                }
                String result = String.format(getString(R.string.application_error), errorCode);
                displayResult(result);
            }
        }

        @Override
        protected void onDestroy() {
            super.onDestroy();
            mChecker.onDestroy();
        }

    }

Kotlin:

requireActivity().supportFragmentManager
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 FragmentManager 替代已弃用的 showDialog 的相关文章

  • 更改首选项的背景颜色

    我有一个PreferenceCategory xml 文件 我已经在其中定义了所有首选项 我从扩展的类中调用它PreferenceActivity 我无法设置设置屏幕的背景 该屏幕是在如下所示的 xml 文件的帮助下显示的 请看我已经定义了
  • Whatsapp 在 Android 中共享音频文件时正在剪切音频文件

    我在共享格式不是 mp3 的音频文件时遇到问题 文件被共享 但长度较短 例如 如果文件有 10 秒 则仅共享 5 秒 如果我使用 mp3 格式 它会完全共享 但其他格式会出现问题 注意 该文件在其他应用程序 如Messenger 中共享没有
  • fresco 的 Proguard 错误

    我正在使用 ProGuard 当我在发布配置中运行项目时 出现以下错误 Warning com facebook imagepipeline bitmaps DalvikBitmapFactory can t find referenced
  • 如何在 StateListDrawable 中设置可绘制对象的 alpha 值?

    我想在按下时更改可绘制对象的 alpha 值 因此 我创建了两个可绘制对象并将它们放入 StateListDrawable 中 并设置按下状态的 alpha 值 但它就是行不通 StateListDrawable content new S
  • 在屏幕上随机生成一个圆圈并将其设为绿色或红色

    所以我一直在尝试制作一个游戏应用程序 它可以在 Android 屏幕上随机显示带有文本的红色按钮或带有文本的绿色按钮 如果有人可以帮助我 我将不胜感激 另外 如果有人知道如何做到这一点 我想慢慢地产生更快的酷优势 谢谢 SuppressLi
  • Android Studio磁盘空间不足如何解决?

    我随机收到此错误 并且不确定为什么 Android Studio 的磁盘空间变低 Android Studio 系统目录分区磁盘空间不足 Update 此应用程序安装在运行 10 10 1 的 Mac 上 具有 251GB 内部存储和占用
  • Android 上通过 JSCH 的基本 SSH 连接

    作为来自此的用户question https stackoverflow com questions 14323661 simple ssh connect with jsch和这个tutorial http eridem net andr
  • 用于代码生成的 ANTLR 工具版本 4.7.1 与当前运行时版本 4.5.3 不匹配

    我正在开发一个 Android 应用程序 当前使用 DSL 和一些库 突然构建给了我这个错误 任务 app kaptDebugKotlin 失败 用于代码生成的 ANTLR 工具版本 4 7 1 与当前运行时版本 4 5 3 不匹配 用于解
  • 如何在代码中设置TextView的文字颜色?

    在 XML 中 我们可以通过以下方式设置文本颜色textColor属性 比如android textColor FF0000 但如何通过编码来改变它呢 我尝试过类似的东西 holder text setTextColor R color R
  • 我可以使用“导入 com.facebook.FacebookSdk;”使用 Facebook SDK 3.23.1?

    在我的 app build gradle 文件中 我有compile com facebook android facebook android sdk 3 23 1 在我的 BaseActivity java 文件 其中有 public
  • BluetoothLeScanner 服务内部问题

    Update从Android 10以上我认为你需要ACCESS BACKGROUND LOCATION权限 因此 如果此代码在最新的 Android 版本上不起作用 就是针对此问题的 ACCESS BACKGROUND LOCATION 受
  • NoClassDefFoundError:com.google.firebase.FirebaseOptions

    我继续得到NoClassDefFoundError在我正在使用的其他测试设备 4 4 2 上 但在我的测试设备 Android 5 1 上运行良好 我尝试了用谷歌搜索的解决方案 但似乎没有任何效果 我正在使用 Firebase 实时数据库
  • 改造Android基本且简单的问题

    我的服务器返回简单的 Json 结果 如下所示 message Upload Success 我正在尝试将结果放入改造模型类中 public class MyResponse SerializedName message String me
  • 在Android的activity中调用onResume

    在活动的过程中通过调用 this OnResume 强制 onResume 事件可以吗 或者我应该实现另一个由 OnResume 和第一个成员调用的过程 实现在您的重写中调用的另一个过程onResume 后者不打算由您调用 它是一种方便的方
  • EditText 的高度不会扩展到其父级的高度

    我在滚动视图中放置了编辑文本 高度 match parent并期望它的高度等于滚动视图 但事实并非如此 它的高度就像wrap content这意味着如果 EditText 中没有文本 我必须将光标指向要弹出的软键盘的第一 行 我想要的是我可
  • MPAndroidChart:组合图表

    我在用MPAndroidChart 库 https github com PhilJay MPAndroidChart 我想用CombinedChart创建这样的图表 那可能吗 我尝试了一下 但似乎不起作用 因为 这些条目没有按我的预期工作
  • 找不到资源矢量绘图的异常

    我将在某些设备上运行我的应用程序 其崩溃日志如下 01 04 16 54 02 206 7466 7466 com lawnmowers E AndroidRuntime FATAL EXCEPTION main Process com l
  • onTouch 给出奇怪的触摸点 Android

    我正在做的事情非常简单 我以前做过 但现在它没有按我的预期运行 无论如何 让我简要解释一下我正在尝试做什么以及我得到了什么 设想 我有一个RelativeLayout其中一个ImageView已放置 现在我设置touchlistener像这
  • RecyclerView元素更新+异步网络调用

    我有一个按预期工作的回收视图 我的布局中有一个按钮可以填充列表 该按钮应该进行异步调用 根据结果 我更改按钮的外观 这一切都发生得很好 但是 当我单击按钮并快速向下滚动列表时 异步调用的结果会更新新视图的按钮 代替旧视图的视图 我该如何处理
  • SambaFileInputStream 和 FileInputStream 有什么不同?

    我需要从 samba 服务器流式传输视频 并且我使用 nanohttpd 在我的项目中创建简单的服务器 当我使用本地文件中的 fileinputstream 时 视频视图可以按设置播放视频 http localhost 8080 publi

随机推荐

  • 如何通过脚本以编程方式确定已安装的 IE 版本

    我们有一个基于selenium grid的自动化测试集群 为了管理集群 我构建了一个 Rake Ruby 任务集合 可以启动 重新启动 ping 和停止节点 我正在多种浏览器 包括 IE6 IE7 和 IE8 上测试我们的应用程序 这意味着
  • 如何在javascript中调整Base64图像的大小

    我测试了这个包 https preview npmjs com package resize base64 https preview npmjs com package resize base64 它需要前端部分来制作Canvas元素 等
  • Relay 和 GraphQL 中的身份验证

    我一直在使用反应和中继开发一个应用程序 现在我一直致力于实现身份验证 我知道您可以通过 GraphQL 解析函数中提供的上下文将值传递给每个 graphql 请求 我更困惑的是要传递什么以及如何传递 使用 JSON Web 令牌 护照或其他
  • 有什么快速方法可以使用 pandas 获得时间序列数据的正确聚合输出?

    我用过Redfin房地产数据 其中记录了芝加哥地区每个地区多年来的每月房屋销售价格 我想先计算该城市的年平均房屋销售价格 同时我还想获得每个区域的年房屋销售价格变化 然后我想将每个区域的年销售价格变化与各自的年平均房屋销售价格进行比较在城市
  • 动态添加按钮到面板并获取其父 ID

    我创建了一个页面 为管理员提供了一种更改照片信息 例如标题 描述等 的方法 页面上的所有控件都是动态添加的 因为我有多个照片库 面板 gt 父级 button 标题文本框 描述文本框 在每个面板中 我都有一个按钮 单击该按钮会将更改后的信息
  • 32 位编译在 64 位 Ubuntu 16.04 上失败

    我有一个应用程序需要使用 glib 和第三方提供的 32 位库 当我在 32 位 Ubuntu 上编译时 应用程序构建并成功运行 但是 当我在 64 位 Ubuntu 上尝试相同的操作时 由于以下错误而无法构建 usr include gl
  • CGPDFDocument 和 CGPDFPage 的 MonoTouch CoreGraphics PDF 内存问题

    我已经使用 MonoTouch 3 周了 一切都很顺利 直到我必须在我的应用程序中显示 PDF 使用苹果的Quartz 2D 编程指南 http developer apple com mac library documentation G
  • 如何录制媒体播放器中当前正在播放的实时视频流

    我用谷歌搜索了很多 但没有发现任何成功 甚至没有一个可以让我启动的点 我正在使用 VideoView 播放来自 url 的视频 成功播放视频 同时我想录制当前播放的视频 例如 http ip streamname playlist m3u8
  • 在 Flutter 中创建弹出对话框

    我需要一种在颤动中创建弹出对话框的方法 我能够根据需要创建 双色调 设计和一个对话框 但是当用户单击按钮导航到此屏幕时 我无法找到弹出对话框的方法 创建视图的代码 class CreateID extends StatelessWidget
  • 如何有条件地更改详细信息列表中行的颜色?

    我正在看自定义项目行 https developer microsoft com en us fabric components detailslist customitemrows但没有太多文档 我有一个表 如果当前用户创建了一行 我想将
  • 马尔可夫链如何工作以及什么是无记忆?

    马尔可夫链如何工作 我读过维基百科马尔可夫链 http en wikipedia org wiki Markov chain 但我不明白的是失忆 无记性指出 下一个状态仅取决于当前状态 而不取决于 之前发生的事件的顺序 如果马尔可夫链具有这
  • 如何清除 PHP 中先前回显的项目

    在 php 中 有没有办法清除 删除所有先前回显或打印的项目 例如 我的脚本使用 include 函数 包含的文件不应回显任何内容 以防万一有人 例如黑客 尝试 我需要一种方法来删除
  • Xamarin.Forms 页面BackgroundImage 属性

    由于 BackgroundImage 是一个字符串 您应该如何设置页面的背景图像 我将非常感谢任何建议 到目前为止我已经尝试过 MainPage new ContentPage BackgroundImage Images image pn
  • pg-promise:在事务中的下一个查询中使用一个查询的结果

    我是带有 pg promise for postgres 的 node js 尝试按顺序执行 2 个插入的事务 第一次插入的结果 ID 应在事务中的下一次插入中使用 如果任何查询失败则回滚 嵌套第二次db none inside then
  • 错误:NullPointerAccess:变量“”在此位置只能为空

    我正在创建一个 Web 服务来查询数据库并返回数据库中对象的列表 我收到错误 NullPointerAccess 变量 varname 在此位置只能为空 无论我将变量放在哪里 我都会收到相同的警告 无论我在变量中放入什么 它都会返回 nul
  • 这是确保 Java 中仅存在对象的单个实例的有效方法吗?

    我在使用 Mongodb 时遇到了一些奇怪的错误 在 Mongodb 中 你应该维护Mongo单例 我只是想确保这实际上是有效的 public class DBManager public static Mongo mongoSinglet
  • 读取工作簿而不使用 ADO 打开它

    在这个问题之后 无需打开另一个工作簿即可获取值 图表 https stackoverflow com questions 16840573 get value charts in another workbooks without open
  • 基于 jquery xml 的模板引擎

    从缺乏信息来看 我猜下面的问题可能有点 偏离滑雪道 正如他们所说 我正在尝试找到一个基于 XML 的 javascript 首选基于 JQuery 模板引擎 有点像 Ext JS Sencha 或 SPRY 数据集如何做事 轻一点的东西 显
  • 如何在 Dapper 中使用“Where In”

    我已经尝试使用一段时间但没有成功IEnumerable
  • 如何使用 FragmentManager 替代已弃用的 showDialog

    我正在使用 displayDialog 方法 它有效 但 Eclipse 向我显示了一个警告 showDialog showRetry 1 0 Method private void displayDialog final boolean