錯誤的全文是:我升級到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是一個很好的規範問題,可能對未來的讀者有用。如果您還有其他疑問,那麼最好將它們添加爲一個新問題,而不是編輯舊問題。祝你好運! –