2014-03-19 3 views
1

조각이 포함 된 활동이 있습니다. 프래그먼트를 새로 고치는 간단한 방법이 있습니까? 나는 비슷한 것을 생각했다 getFragmentManager().beginTransaction().refresh().commit(); ... 하지만 새로 고침 같은 게 없다. 어떤 제안? 내 조각에는 임의의 숫자가 표시된 축배가 있습니다. 토스트는 각각 새로운 임의의 숫자를 보여줍니다 벤 피어슨 대신) onCreateView (모든 코드를 넣는 다른 방법을, 말했듯이조각을 새로 고치는 방법

public static class PlaceholderFragment extends Fragment { 

    TextView tv_question; 
    Button btn_answer_1; 
    Button btn_answer_2; 
    Button btn_answer_3; 

    public PlaceholderFragment() { 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.fragment_activity_quiz, container, false); 

     Toast.makeText(getActivity(), String.valueOf(Math.random()), Toast.LENGTH_LONG).show(); 

     tv_question = (TextView)rootView.findViewById(R.id.tv_question); 
     SupportFunctions.setViewBackgroundWithDrawable(tv_question, getResources().getDrawable(R.drawable.quiz_question_background)); 

     btn_answer_1 = (Button)rootView.findViewById(R.id.btn_answer_1); 
     btn_answer_2 = (Button)rootView.findViewById(R.id.btn_answer_2); 
     btn_answer_3 = (Button)rootView.findViewById(R.id.btn_answer_3); 
     SupportFunctions.setViewBackgroundWithDrawable(btn_answer_1, getResources().getDrawable(R.drawable.quiz_answer_background)); 
     SupportFunctions.setViewBackgroundWithDrawable(btn_answer_2, getResources().getDrawable(R.drawable.quiz_answer_background)); 
     SupportFunctions.setViewBackgroundWithDrawable(btn_answer_3, getResources().getDrawable(R.drawable.quiz_answer_background)); 
     btn_answer_1.setOnClickListener(btn_answer_listener); 
     btn_answer_2.setOnClickListener(btn_answer_listener); 
     btn_answer_3.setOnClickListener(btn_answer_listener); 

     // LOAD QUESTION FROM DB 

     Globals.setCORRECT_ANSWER(1); 

     // SHUFFLE ANSWERS 

     return rootView; 
    } 

    public OnClickListener btn_answer_listener = new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      int id = v.getId(); 

      if (id == R.id.btn_answer_1 && Globals.getCORRECT_ANSWER() == 1) { 
       // correct 
       answerCorrect(); 
      } 
      else if (id == R.id.btn_answer_2 && Globals.getCORRECT_ANSWER() == 2) { 
       // correct 
       answerCorrect(); 
      } 
      else if (id == R.id.btn_answer_3 && Globals.getCORRECT_ANSWER() == 3) { 
       // correct 
       answerCorrect(); 
      } 
      else { 
       answerWrong(); 
      } 

     } 

    }; 

    private void answerCorrect() { 

     Globals.incrementAnswersTotal(); // got to become sharedPreference 
     Globals.incrementAnswersRound(); 
     Globals.incrementCorrectAnswersTotal(); // sharedPreference 
     Globals.incrementCorrectAnswersRound(); 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setIcon(getResources().getDrawable(R.drawable.quiz_ic_dialog_correct)); 
     builder.setTitle(getResources().getString(R.string.ad_correct_answer_heading)); 
     builder.setMessage(getResources().getString(R.string.ad_correct_answer_text)); 
     builder.setPositiveButton(R.string.ad_keep_on, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       getFragmentManager().beginTransaction().replace(R.id.container, getFragmentManager().findFragmentById(R.id.container)).commit(); 
      } 

     }); 
     builder.setNegativeButton(R.string.ad_to_menu, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       startActivity(new Intent(getActivity(), ActivityAppLaunch.class)); 
      } 

     }); 
     builder.setCancelable(false); 


     AlertDialog alert = builder.create(); 
     alert.show(); 

    } 

    private void answerWrong() { 

     Globals.incrementAnswersTotal(); // got to become sharedPreference 
     Globals.incrementAnswersRound(); 

     AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setIcon(getResources().getDrawable(R.drawable.quiz_ic_dialog_wrong)); 
     builder.setTitle(getResources().getString(R.string.ad_wrong_answer_heading)); 
     builder.setMessage(getResources().getString(R.string.ad_wrong_answer_text) + "mein Text hier"); 
     builder.setPositiveButton(R.string.ad_keep_on, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 

      } 

     }); 
     builder.setNegativeButton(R.string.ad_to_menu, new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface dialog, int which) { 
       // TODO Auto-generated method stub 
       startActivity(new Intent(getActivity(), ActivityAppLaunch.class)); 
      } 

     }); 
     builder.setCancelable(false); 

     AlertDialog alert = builder.create(); 
     alert.show(); 

    } 

} 
+0

'새로 고침'이란 무엇을 의미하며 사용 사례는 무엇입니까? 코드를 포함하십시오. –

+0

다시로드하십시오. 내 조각은 임의의 숫자를 제공하고 그것을 새로 고쳐야하므로 새로운 난수가 표시됩니다. 위의 코드를 참조하십시오. 내 'positiveButton'에서 필요합니다 – user3432220

+0

임의의 숫자와 positiveButton이 표시되지 않습니다. 올바른 코드는 어디에 있습니까? 왜 그냥 새로운 난수를 생성하지 그래? 새로운 Random(). nextInt(); – ElDuderino

답변

0

() Fragment.onCreateView의 코드를 다시 수행 그래서 조각을 refreh 할 :

public void showNewRandomNumber() { 
    Toast.makeText(getActivity(), String.valueOf(Math.random()), Toast.LENGTH_LONG).show(); 
} 

그런 다음 원하는 곳에서 전화하십시오. positiveButton의 onClick 메서드에서 호출하려고하는 것처럼 들리므로 그 곳으로 이동합니다 (그렇다면 showNewRandomNumber에 public 가시성이 없어야 함).

+0

나이에 붙어 있지만 내 onCrearteView() 메서드에서 모든 것을 필요로하고 어떻게 그 함수에서 findViewById()를 얻을 수 있습니까? – user3432220

+0

필드에 루트보기를 숨길 수 있습니다. –

+0

...하지만 필드에 뷰 참조를 이미 저장 했으므로 findViewById를 다시 호출해야하는 이유는 무엇입니까? –

관련 문제