我想要一个片段,要求用户在关闭我的应用程序时对其进行评分。该片段工作正常,但可能会很烦人,尤其是在用户关闭应用程序的前几次出现时。 我希望他们在应用程序出现之前使用该应用程序,比如 5 次。 如何使用全局持有者完成此操作?
这就是我想出的解决方案。 我相信每个人都会告诉我使用全局变量不是最好的方法。 但这对我有用。 在我的主活动中,我输入了以下代码:
@Override
public void onBackPressed() {
int theCount = globalHolder.getCounter();
globalHolder.setCounter(theCount++);
if (globalHolder.getStop() == 1) {
finish();
} else if (theCount == 5 || theCount == 10 || theCount == 25) {
globalHolder.setCounter(theCount++);
final DialogFragment rate = new RateMe();
rate.show(getSupportFragmentManager(), "Rate");
} else {
globalHolder.setCounter(theCount++);
finish();
}
}
现在,让我解释一下。 第一个全局是计数器。 我添加这个是因为我想跟踪用户使用该应用程序的次数。 一分钟后你就会明白为什么。 计数器初始化为 0。 因此,由于用户是第一次访问该程序,因此我增加了计数器。
输入下一行代码,这样我就不会惹恼不想对应用程序进行评级或已经同意对其进行评级的用户。 这就是你能做的。 您无法判断他们是否真的对应用程序进行了评级,但您可以确定他们是否按下按钮这样做。 所以我必须假设,既然他们按下了"是"按钮,他们实际上对应用程序进行了评级。 现在我想停止显示片段。 所以我成立了另一个全球叫....停。 我将此全局设置为"0"(表示"否")。 是的,我使用了整数。 这是我的选择。 你可以使用你想要的。 因此,当全局更改为"1"时,它会递增计数器,然后关闭程序。
"else if"是我设置希望片段显示时间限制的地方。 它设置为仅在用户第 5 次、第 10 次和第 25 次使用应用程序时显示片段。 如果他们在第 25 次使用时没有对应用程序进行评级,他们很可能不会。 从这一点开始,计数器再次递增(稍后您将看到原因),并且片段显示在上面的计数上。
下一个"else"递增计数器并关闭程序。
片段为:
public class RateMe extends DialogFragment {
@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);
builder.setPositiveButton("Yes, I Will", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((MainActivity)getActivity()).globalHolder.setStop(1);
Uri uri = Uri.parse("market://details?id=wolfEnterprisesLLC.motg&hl=en");
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.setNeutralButton("Please Do Not Ask Again", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((MainActivity)getActivity()).globalHolder.setStop(1);
getActivity().finish();
}
});
builder.setNegativeButton("Not Now", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().finish();
}
});
return builder.create();
}
}
在正单击时,名为"stop"的全局设置为"1"。从这一点开始,用户被发送到Play商店对应用程序进行评分。
如果用户不想再次被询问,可以按下的"中性"按钮也将全局"停止"设置为"1"。从这里程序关闭。再次将全局设置为"1"将阻止片段在将来出现。
"否定"按钮为"不是现在",关闭程序。 回顾主要活动 还记得计数器吗? 这就是为什么我希望计数器继续。 因此,如果按下负按钮,它仍将保持计数,并在必要时在 10 日和 25 日再次询问他们以对应用程序进行评分。
最后,在我的应用程序类中,我添加了:
int stop;
int counter;
public int getStop() {
return stop;
}
public void setStop(int stop) {
this.stop = stop;
}
public int getCounter() {
return counter;
}
public void setCounter(int counter) {
this.counter = counter;
}
所以我帮助这个帮助某人。
:)