小编And*_*tor的帖子

Android致命错误 - 在onSaveInstanceState之后无法执行此操作

我在Android中请求权限后尝试执行片段事务 - 但应用程序不断崩溃.如何更改此代码以避免这种情况?

任何帮助表示赞赏.

在发送电子邮件之前检查许可:

private void emailShare() {
    if (mayRequestContacts()) {
        emailShareImpl();
    }
}
Run Code Online (Sandbox Code Playgroud)

检查许可:

private boolean mayRequestContacts() {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
            return true;
        }

        requestPermissions(new String[]{READ_CONTACTS}, REQUEST_READ_CONTACTS);

        return false;
    }
Run Code Online (Sandbox Code Playgroud)

允许检查结果:

  @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        if (requestCode == REQUEST_READ_CONTACTS) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                emailShareImpl();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果获得批准,则启动碎片交易:

 private void emailShareImpl() {
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        EmailReferDialog mEmailReferDialog = new EmailReferDialog();
        mEmailReferDialog.setCancelable(true);
        mEmailReferDialog.show(fragmentManager, "EMAIL_REFER_DIALOG"); …
Run Code Online (Sandbox Code Playgroud)

android android-intent android-fragments android-permissions android-savedstate

14
推荐指数
1
解决办法
5003
查看次数