2015-04-21 3 views
1

Я создаю викторину в Android Studio. Мой testActivity.java имеет в нем адаптер пейджера, который отображает 3 фрагмента (вопросы). Когда я нажимаю кнопку «Конец», начинается новое действие «Result.java». Он показывает, сколько правильных ответов у меня есть, и я прошел тест. У меня есть еще одна кнопка в моей работе Result, которая после нажатия должна открыть тот же тест, который только что сделал человек, но с объяснениями ниже каждого вопроса. Я также хочу, чтобы флажки, которые человек проверил во время теста, будут проверяться, когда будут показаны результаты. Как я могу это сделать?Как показать результаты викторины?

Кстати, я заметил, что когда я нажимаю кнопку «Назад» (на моем телефоне), тот же тест открывается, когда мои выбранные ответы проверяются. Если бы я мог написать код, возвращающийся к предыдущему действию, и немного изменил его (добавляет текст с объяснением вопроса), это решит мою проблему.

testActivity.java:

public class testActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_pager_adapter); 
     initialisePaging(); 
    } 

    private void initialisePaging() { 
     List<Fragment> fragments = new Vector<Fragment>(); 
     fragments.add(Fragment.instantiate(this,fragment1.class.getName())); 
     fragments.add(Fragment.instantiate(this,fragment2.class.getName())); 
     fragments.add(Fragment.instantiate(this,fragment3.class.getName())); 
     PagerAdapter mPagerAdapter = new PagerAdapter(this.getSupportFragmentManager(), fragments); 

     ViewPager pager = (ViewPager) findViewById(R.id.viewpager); 
     pager.setAdapter(mPagerAdapter); 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_test, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

} 

PagerAdapter.java:

public class PagerAdapter extends FragmentPagerAdapter { 

    private List<Fragment> fragments; 

    public PagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

    @Override 
    public Fragment getItem(int arg0) { 
     return this.fragments.get(arg0); 
    } 

    @Override 
    public int getCount() { 
     return this.fragments.size(); 
    } 

    public void setFragments(List<Fragment> fragments) { 
     this.fragments = fragments; 
    } 
} 

Result.java:

public class Result extends ActionBarActivity { 

    TextView win_lose, percent, correctAnswers; 
    int Ans1, Ans2, Ans3, percentAns; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getSupportActionBar().hide(); 
     setContentView(R.layout.activity_result); 
     calculateResult(); 
    } 

    private void calculateResult() { 
     win_lose = (TextView)findViewById(R.id.textView9); 
     percent = (TextView)findViewById(R.id.textView10); 
     correctAnswers = (TextView)findViewById(R.id.textView7); 

     final SharedPreferences app_preferences = PreferenceManager.getDefaultSharedPreferences(this); 

     int Ans1 = app_preferences.getInt("answer_value1", 0); 
     int Ans2 = app_preferences.getInt("answer_value2", 0); 
     int Ans3 = app_preferences.getInt("answer_value3", 0); 
     float AnsNum = Ats1+Ats2+Ats3; 

     float percentAns = (AnsNum * 100.0f)/9; 
     int correctAns = 0; 

     if (Ans1 == 1){correctAns++;}; 
     if (Ans2 == 1){correctAns++;}; 
     if (Ans3 == 1){correctAns++;}; 

     if (percentAns >= 70){ 
      win_lose.setText("Win"); 
      percent.setText(String.valueOf(percentAns)+" %"); 
      percent.setTextColor(Color.parseColor("#FF1DD710")); 
      correctAnswers.setText(String.valueOf(correctAns)+"/9"); 
     } else { 
      win_lose.setText("Lose"); 
      percent.setText(String.valueOf(percentAns)+" %"); 
      percent.setTextColor(Color.RED); 
      correctAnswers.setText(String.valueOf(correctAns)+"/9"); 
     } 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.menu_result, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

ответ

0

арка itecture должно быть следующим: TestActivity parent; QuizFragment, ResultFragment и AnswersFragment.

Я бы не проектировал задания Quiz and Answers в одном фрагменте, так как каждый фрагмент должен отвечать за одно задание, я бы не ожидал, что ui тоже будет таким же похожим.

Все они должны управляться с помощью TestActivity. Вы можете использовать карту, которая содержит логические массивы для каждого вопроса и передать ее на AnswersFragment через TestActivity.

0

Я предлагаю вам перейти к базе данных, содержащей вопросы, варианты, правильный ответ и тест, которые пользователь выполняет с течением времени, поэтому он может быть загружен с определенной даты и может также иметь исторический и вы можете сделать некоторые статистические диаграммы по правильному/неправильному ответу, среднему балу и т. д. Поэтому, когда вы запускаете приложение, всегда начинайте новый, и если вам нужно показать результаты, просто выберите дату из таблицы.

Смежные вопросы