- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在通过 Deitel 进行编码:Android 如何编程示例,在其中两个示例中,我的 Android Studio 在匿名内部类上给出了警告/错误。它声明 fragment 应该是静态的。
完成此操作的正确方法是什么?如果我创建静态非匿名内部类,那么就没有关于该类的警告,但我不能引用非静态类变量(?)。其他方法可能是创建一个单独的类(不是内部类),但是引用变量也存在同样的问题。
此问题与示例 Cannon Game、类 CannonView、方法 showGameOverDialog(下方)以及 FlagQuiz 相关。
private void showGameOverDialog(final int messageId) {
final DialogFragment gameResult =
new DialogFragment() {
@Override
public Dialog onCreateDialog(Bundle bundle) {
AlertDialog.Builder builder =
new AlertDialog.Builder(getActivity());
builder.setTitle(getResources().getString(messageId));
builder.setMessage(getResources().getString(
R.string.result_format, shotsFired, totalElapsettime
));
builder.setPositiveButton(R.string.reset_game,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialogIsDisplayed = false;
newGame();
}
});
return builder.create();
}
};
activity.runOnUiThread(
new Runnable() {
@Override
public void run() {
showSystemBars();
dialogIsDisplayed = true;
gameResult.setCancelable(false);
gameResult.show(activity.getFragmentManager(), "results");
}
}
);
}
最佳答案
// display an AlertDialog when the game ends
private void showGameOverDialog(final int messageId) {
// DialogFragment to display game stats and start new game
final AlertDialog.Builder builder = new AlertDialog.Builder(activity);
builder.setTitle(getResources().getString(messageId));
// display number of shots fired and total time elapsed
builder.setMessage(getResources().getString(
R.string.results_format, shotsFired, totalElapsedTime));
builder.setPositiveButton(R.string.reset_game,
new DialogInterface.OnClickListener() {
// called when "Reset Game" Button is pressed
@Override
public void onClick(DialogInterface dialog,
int which) {
dialogIsDisplayed = false;
newGame(); // set up and start a new game
}
}
);
/* final DialogFragment gameResult =
new DialogFragment() {
// create an AlertDialog and return it
@Override
public Dialog onCreateDialog(Bundle bundle) {
// create dialog displaying String resource for messageId
AlertDialog.Builder builder =
new AlertDialog.Builder(getActivity());
builder.setTitle(getResources().getString(messageId));
// display number of shots fired and total time elapsed
builder.setMessage(getResources().getString(
R.string.results_format, shotsFired, totalElapsedTime));
builder.setPositiveButton(R.string.reset_game,
new DialogInterface.OnClickListener() {
// called when "Reset Game" Button is pressed
@Override
public void onClick(DialogInterface dialog,
int which) {
dialogIsDisplayed = false;
newGame(); // set up and start a new game
}
}
);
return builder.create(); // return the AlertDialog
}
};
*/
// in GUI thread, use FragmentManager to display the DialogFragment
activity.runOnUiThread(
new Runnable() {
public void run() {
final AlertDialog gameResult = builder.create();
showSystemBars();
dialogIsDisplayed = true;
gameResult.setCancelable(false); // modal dialog
// gameResult.show(activity.getFragmentManager(), "results");
gameResult.show();
}
}
);
}
关于java - Deitel 如何编程Android Cannon Game 匿名内部类警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49151711/
我正在研究 Deitel&Deitel 的 C 手册中的这个函数,但它的文档不多(至少,对我来说理解不够),我很难理解它。 void insert(ListNodePtr *sPtr, char va
我一直在学习 Deitel 的书(Java 如何编程),我想解决练习 6.35。这是它的要求: 编写一个程序来帮助学生学习乘法。使用 Random 对象生成两个正整数(每个数字一位)。该程序应在屏幕上
Deitel 的《Java How To Program》第 10 版练习: 2.24 (Largest and Smallest Integers) Write an application tha
我错过了将实现放在驱动程序类中的要点,而不是让驱动程序类仅调用其他类中的方法。我不确定如何将实现移到主类之外。欢迎提出建议! /* *Deitel Chapter 6 Exercise 6.30 */
我正在通过 Deitel 进行编码:Android 如何编程示例,在其中两个示例中,我的 Android Studio 在匿名内部类上给出了警告/错误。它声明 fragment 应该是静态的。 完成此
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 8 年前。 Improve this qu
Closed. This question needs debugging details。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。 4年前关闭。 I
int main(void) { int a[5] = {36,24,10,6,12}; int pass; int i; int hold;
好吧,基本上,我需要在不知道学生确切人数的情况下找到学生组的平均成绩。 下面给出如下代码: #include int main (void) { unsigned int counter;
嗨,这是我对一个看似简单问题的解决方案。只需从用户那里获取一些数据来计算用户是否超出了他的限制,如果超过则显示一条消息。我使用了哨兵控制的重复。我可以通过输入 -1 第一次退出程序。但之后它不起作用,
我是一名优秀的程序员,十分优秀!