2017-08-28 37 views
0

我已經完成了一個標誌測驗應用程序,但事實證明,該應用程序無法順利運行。我已經調試好幾次了。目前,我被卡住了。最初的例外是片段null必須是公共靜態的,以重新創建實例..或類似的東西。經過幾個小時的網絡衝浪解決方案後,我創建了一個新班,這個班沒有任何錯誤,但它是紅色的。爲什麼會這樣?還有,我需要使用完整或更正此代碼。如工作室是說無效的ShowDialog()不低於使用的是我的MainActivity片段如何安裝項目中的對話框片段

   guessButton = ((Button) v); 
       String guess = guessButton.getText().toString(); 
       String answer = getCountryName(correctAnswer); 
       ++totalGuesses; 

       if (guess.equals(answer)) { 
        ++correctAnswers; 


        answerTextView.setText(answer + "!"); 
        answerTextView.setTextColor(
          getResources().getColor(R.color.correct_answer)); 

        disableButtons(); 
        if (correctAnswers == FLAGS_IN_QUIZ) { 
         resetQuiz(); 

         void showDialog(){ 
          DialogFragment newFragment = MyNewFragment.newInstance(); 
          newFragment.show(getFragmentManager(), "QUIZ RESULTS"); 
          newFragment.setCancelable(false); 
         } 
         public void doPositiveClick(){ 
         Log.i(" fragmentdialog" , "positive click"); 








        } 
       } 

       else { 

         handler.postDelayed(
           new Runnable() { 
            @Override 
            public void run() { 
             animate(true); 
            } 
           }, 2000); 

        } 
       } else { 
        flagImageView.startAnimation(shakeAnimation); 

        answerTextView.setText((R.string.incorrect_answer)); 
        answerTextView.setTextColor(ContextCompat.getColor(getContext(), 
          R.color.incorrect_answer)); 
        guessButton.setEnabled(false); 
       } 

      } 

      ; 


      private void disableButtons() { 
       for (int row = 0; row < guessRows; row++) { 

        LinearLayout guessRow = guessLinearLayouts[row]; 
        for (int i = 0; i < guessRow.getChildCount(); i++) 
         guessRow.getChildAt(i).setEnabled(false); 
       } 

      } 
     }; 
     } 

下面是新類,在出現紅保持的部分。

   public class MyNewFragment extends DialogFragment { 
public static MyNewFragment newInstance() { 
    MyNewFragment frag = new MyNewFragment(); 
    Bundle args = new Bundle(); 
    frag.setArguments(args); 
    return frag; 
} 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 


    AlertDialog.Builder builder; 
    builder = new AlertDialog.Builder(getActivity()) 

      .setMessage("fff") 

      .setPositiveButton(R.string.reset_quiz, 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int whichButton) { 




         } 
        } 
      ); 
    return builder.create(); 

    } 
    }; 

我會感謝一個準確的答案,幫助解決這些問題

+0

我找不到問題,請問您的問題清楚 –

回答

0

看來,我認爲你在某種程度上聲明的if-then-else子句,因此Android的工作室稱未使用中的方法。的代碼,你嘗試啓動DialogFragment代碼段應該看起來更像這個(即沒有周圍void showDialog() {}方法定義):

if (correctAnswers == FLAGS_IN_QUIZ) { 
      resetQuiz(); 
      DialogFragment newFragment = MyNewFragment.newInstance(); 
      newFragment.show(getFragmentManager(), "QUIZ RESULTS"); 
      newFragment.setCancelable(false); 
    } 

我看不到任何東西顯著不對您MyNewFragment的定義,雖然你有一個空的OnClickListener.OnClick()定義,並且您將片段參數設置爲一個空的Bundle。但是,這些問題都不會產生Studio編譯器錯誤,使其顯示爲紅色。找出Studio在哪裏顯示錯誤,它會告訴你代碼出了什麼問題。

相關問題