2013-10-29 2 views
0

두 조각이 있고 첫 번째 조각 두 페이지가 있고 각 페이지에 질문이있는 라디오 버튼이 2 개 이상 있고 그 라디오 버튼이 대답을 선택해야합니다. 현재 if else 함수를 사용하고 setText을 사용하여 라디오 버튼에 대한 질문과 답변을 설정하고 올바른 대답을 클릭하면 마지막 페이지로 이동하여 결과 표시를 클릭 할 때까지 아무 것도 표시되지 않습니다. 지금은 계속 사용하고 다른 경우에는 setOnClickListener을 모두 사용해야합니다. 또한 setOnClickListener을 사용하면 결과 페이지의 변수에 +1 결과를 보냅니다.이 작업을 수행하는 더 쉬운 방법은 무엇입니까? radiogroups/buttons - android

더 쉬운 방법이 있나요?

이 내 코드는이 작업을 수행 할 수있는 쉬운 방법을 찾는 것보다 다른

if(fragmentNumber == 0) 
    { 
     ask_question.setText("Question1?"); 
     rb1.setText("Answer1"); 
     rb2.setText("Answer2"); 
     rb1.setOnClickListener(new android.view.View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ResultsFragment.Q1 = 1; 
      } 
     }); 
    } 
    else if(fragmentNumber == 1) 
    { 
     ask_question.setText("Question2?"); 
     rb1.setText("Answer2-1"); 
     rb2.setText("Answer2-2"); 
     rb2.setOnClickListener(new android.view.View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       ResultsFragment.Q2 = 1; 
      } 
     }); 

    } 

모습입니다, 나도 또 다른 문제 다 퉜다. 예제를 사용하겠습니다.

예. Q1이 맞다면 Q2를 얻었습니다. 결과를 보여주기 위해 갈 때 잘못 됐습니다. 1/2는 좋았지 만 Q1으로 돌아가서 잘못된 대답을 클릭하면 결과를 보여주기 위해 돌아갑니다. 0/2 대신 1/2을 표시 할 것입니다. 즉, 1이 변수에 설정되면 거기에 머물러 있음을 의미합니다. 나는 setOnclickListener을 사용하면 다른 radioButtons == 0을 설정할 수 있습니다.하지만 각 if 문 안에 LOTS가있을 것입니다. setonClickListner 이것은 다른 쉬운 결과를 찾는 또 다른 이유입니다.

미리 감사드립니다.

답변

1

쉬운 방법을 찾고 계십니까? 승인. 제 의견으로는 질문과 답변을 한 페이지만으로 조각 (사용자 정의 QAFragment)을 가져야합니다.

기본 활동에 postQAResult 메서드를 추가하여 조각에서 콜백을 수신합니다.

public void postQAResult(String question, String asnwer) { 
    // TODO: handle answer for the question. 
    // For example if you need to store answer you can use SharedPreferences to save. 
    // Or you can ask different questions for given answer. 
} 

이제 새로운 질문/답변 페이지가 필요할 때 활동에서이 qa 단편을 추가 할 수 있습니다. 예를 들면;

String questionText = "Any problem?"; 
    String[] answerArray = new String[]{"Yes","No"}; 
    QuestionFragment questionFragment = QuestionFragment.newInstance(questionText, answerArray); 

    getFragmentManager().beginTransaction().add(android.R.id.content, questionFragment, "UNIQUE_TAG_FOR_YOUR_PAGE").commit(); 

이전 질문을 사용자에게 보여줘야 할 수도 있습니다. 그런 다음 qa 조각을 제거하지 말고 추가하는 동안 다시 조각에 넣으십시오.

+0

덕분에 저는 여전히이 새로운 것을 알았습니다 ... – WXR

+0

코드를 복사하여 붙여 넣으면 ... 세 부분을주었습니다 ... 첫 번째 부분은 QAFragment 클래스를 만드는 부분이라고 생각합니다. 그리고 물론 레이아웃에서 나는 몇 개의 TextView와 RadioGroup을 가진 qa.xml 페이지를 만들어야하고'RadioGroup gb = (RadioGroup) findViewById (R.id.radio1)'와 같은 것들을 구현하고'setText' 같은 것들을 구현해야합니다 ? – WXR

+0

두 번째 코드 esp. 'SharedPreferences' 부분에 대해 잘 모르겠습니다. (슬픈 – WXR

관련 문제