错误的全文是:我升级到Android 2.3.3工作室和一个古老的,无缺陷的程序现在给出错误:“碎片应该是静态的......”
C:\Users\Dov\Google Drive\AndroidStudioProjects\FlagQuiz - Copy (2)\app\src\main\java\com\dslomer64\flagquiz\
QuizFragment.java
Error: Fragments should be static such that they can be re-instantiated by the system, and anonymous classes are not static [ValidFragment]
更糟糕的是,它并没有告诉我这行的错误是,我曾以为,因为它是上面提到的,这QuizFragment
有过错,但如何?所以我得出结论,QuizFragment
被提及只是为了表明错误是在哪一类。
我在下面的不完整代码段的评论中的3个地方找到了“匿名”一词。
DialogFragment quizResults = new DialogFragment() // anonymously **********
// extend DialogFragment class
{
@Override public Dialog onCreateDialog(Bundle bundle)
{
...
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setPositiveButton
(
R.string.reset_quiz,
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
resetQuiz();
}
} // end anonymous inner class *******************
);
return builder.create(); // return the AlertDialog
} // end method onCreateDialog
}; // end DialogFragment anonymous inner class ****************
有什么问题(如为2.3.3,没有什么是升级之前错误的)与DialogFragment quizResults = new DialogFragment()
或builder
的定义,其中包含一个匿名内部类?
如果是这样,为什么没有编译错误?在这种情况下,我该如何解决这个问题? (我不想刚刚开始剽窃代码,我没有写[我从作者那里收到项目并做了很多修改],因为至少有3个可以想象的出发点,也许没有解决错误( ?S)
我回复了这个问题,因为修订版1是一个很好的规范问题,可能对未来的读者有用。如果您还有其他疑问,那么最好将它们添加为一个新问题,而不是编辑旧问题。祝你好运! –