如何防止后退按钮关闭主活动中的应用程序?

时间:2016-01-28 16:12:40

标签: java android-fragments android-activity activity-finish onbackpressed

当我尝试显示片段时,我的活动关闭时出现问题。我正在尝试让我的应用程序要求用户在按下后退按钮从主屏幕退出我的应用程序时对我的应用程序进行评级。这应该显示一个片段,要求现在或稍后评级。片段出现约1秒钟,然后应用程序关闭,然后用户可以做出选择。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这是我提出的解决方案:

我将向您展示我为实现片段所做的工作,以及我如何阻止它绕过片段关闭活动。

在我的主要活动中,我补充道:

@Override
public void onBackPressed() {
     final DialogFragment rate = new RateMe();
   rate.show(getSupportFragmentManager(), "Rate");
}

请务必从“覆盖”中删除超级语句,以便在按下后退按钮时完全停止按下按钮。

我使用名为“RateMe”的xml创建了一个空白片段活动。在删除“Hllo World”后我将xml留空了,但一定要仔细检查你的工具:context =。这是我犯的一个错误,它与我的包装不符。简单的修复。只需将其更改为您的包名。

然后在我放入的片段中:

public class RateMe extends DialogFragment {

public static RateMe newInstance(int title) {
    RateMe frag = new RateMe();
    Bundle args = new Bundle();
   // args.putInt("title", title);
    frag.setArguments(args);
    return frag;
}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
    builder.setCancelable(false);
    builder.setTitle("Rate Me");
    builder.setMessage(R.string.Rate);

//在res值strings.xml文件中创建一个字符串。这将是您的片段上显示的//R.string ^^^^然后继续添加......

    builder.setPositiveButton("Yes, I Will", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {

            Uri uri = Uri.pa(RateMe.this);rse("market://details?id=****PUT YOUR GOOGLE PLAY URL INFO HERE");
            Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);
            myAppLinkToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY |
                    Intent.FLAG_ACTIVITY_NEW_DOCUMENT |
                    Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
            try {
                startActivity(myAppLinkToMarket);
            } catch (ActivityNotFoundException e) {
                Toast.makeText(getContext(), " unable to find market app", Toast.LENGTH_LONG).show();
            }

        }
    });
    builder.setNegativeButton("Not Now", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            System.exit(0);    //this will close the application
        }
    });
    return builder.create();
}

}

这对我来说非常合适。希望这可以帮助别人。