2017-08-28 38 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在哪里显示错误,它会告诉你代码出了什么问题。

相关问题