1
当我试图显示一个片段时,我遇到了关闭我的活动的问题。我试图让我的应用程序要求用户在按下后退按钮从主屏幕退出我的应用程序时评价我的应用程序。这应该显示一个片段,要求现在或以后对其进行评分。该片段出现约1秒,然后应用程序关闭,用户可以做出选择。我该如何解决?如何防止后退按钮从主要活动中关闭应用程序?
当我试图显示一个片段时,我遇到了关闭我的活动的问题。我试图让我的应用程序要求用户在按下后退按钮从主屏幕退出我的应用程序时评价我的应用程序。这应该显示一个片段,要求现在或以后对其进行评分。该片段出现约1秒,然后应用程序关闭,用户可以做出选择。我该如何解决?如何防止后退按钮从主要活动中关闭应用程序?
这是我想出了解决方案:
我要告诉你我做了什么来实现的片段,以及如何阻止我从关闭活动绕过片段。
在我的主要活动我说:
@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();
}
}
这非常适合我。希望这可以帮助某人。
对不起。我无法让第一个覆盖语句正确发布。这在你的主要活动中。 –
感谢您的分享,但可以请您1)清理您的代码格式,并2)使这个帖子的“问题”部分成为一个真正的问题,然后提供一个单独的答案? –
@medic_ma IMO,问题应该是在问题部分,并在答案部分的答案。如果我是你,我会提出一个我面临的问题,我会用我提出的解决方案回答同样的问题。这是这个网站的工作原理。 –