2017-02-18 66 views
-2

請給我一些解決競猜應用如何添加後退按鈕在測驗應用程序?

我想製作的是回到我的測驗應用程序按鈕,問題來自數據庫添加後退按鈕。我想按鈕轉到前面的問題不搞亂up.I是新到Android任何一個可以幫助我解決這個問題..

package in.gtarena.myquizapp; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.app.NavUtils; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.RadioButton; 
import android.widget.RadioGroup; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.List; 

import in.gtarena.myquizapp.db.DBAdapter; 
import in.gtarena.myquizapp.model.Question; 

public class ComputerActivity extends AppCompatActivity { 

    private List<Question> questionsList; 
    private Question currentQuestion; 

    private TextView txtQuestion,tvNoOfQs; 
    private RadioButton rbtnA, rbtnB, rbtnC,rbtnD; 
    private Button btnNext,btnBack; 
    private RadioGroup grp; 
    private int obtainedScore=0; 
    private int questionId=0; 

    private int answeredQsNo=0; 

    ArrayList<String> myAnsList; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_concept); 
     init(); 
     btnBack = (Button) findViewById(R.id.btnBack); 
     grp=(RadioGroup)findViewById(R.id.radioGroup1); 

     //Initialize the database 
     final DBAdapter dbAdapter =new DBAdapter(this); 
     questionsList= dbAdapter.getQuestions(); 
     currentQuestion =questionsList.get(questionId); 

     //Set question 
     setQuestionsView(); 

     //Check and Next 
     btnNext.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       RadioButton answer=(RadioButton)findViewById(grp.getCheckedRadioButtonId()); 

       Log.e("Answer ID", "Selected Positioned value - "+grp.getCheckedRadioButtonId()); 

       if(answer!=null){ 
        Log.e("Answer", currentQuestion.getANSWER() + " -- " + answer.getText()); 
        //Add answer to the list 
        myAnsList.add(""+answer.getText()); 

        if(currentQuestion.getANSWER().equals(answer.getText())){ 
         obtainedScore++; 
         Log.e("comments", "Correct Answer"); 
         Log.d("score", "Obtained score " + obtainedScore); 
        }else{ 
         Log.e("comments", "Wrong Answer"); 
        } 
        if(questionId < dbAdapter.rowCount()){ 
         currentQuestion =questionsList.get(questionId); 
         setQuestionsView(); 
        }else{ 
         Intent intent = new Intent(ComputerActivity.this, ResultActivity.class); 

         Bundle b = new Bundle(); 
         b.putInt("score", obtainedScore); 
         b.putInt("totalQs", questionsList.size()); 
         b.putStringArrayList("myAnsList", myAnsList); 
         intent.putExtras(b); 
         startActivity(intent); 
         finish(); 
        } 
       }else{ 
        Log.e("comments", "No Answer"); 
       } 
       //Need to clear the checked item id 
       grp.clearCheck(); 

      }//end onClick Method 
     }); 

     //Check and Back 
     btnBack.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //WHAT SHOULD I DO HERE FOR GO BACK TO PREVIOUS QUESTION// 
      } 
     }); 

    } 

    public void init(){ 
     tvNoOfQs=(TextView)findViewById(R.id.tvNumberOfQuestions); 
     txtQuestion=(TextView)findViewById(R.id.tvQuestion); 
     rbtnA=(RadioButton)findViewById(R.id.radio0); 
     rbtnB=(RadioButton)findViewById(R.id.radio1); 
     rbtnC=(RadioButton)findViewById(R.id.radio2); 
     rbtnD=(RadioButton)findViewById(R.id.radio3); 

     btnNext=(Button)findViewById(R.id.btnNext); 

     myAnsList = new ArrayList<String>(); 
    } 


    private void setQuestionsView() 
    { 
     rbtnA.setChecked(false); 
     rbtnB.setChecked(false); 
     rbtnC.setChecked(false); 
     rbtnD.setChecked(false); 

     answeredQsNo=questionId+1; 
     tvNoOfQs.setText("Questions "+answeredQsNo+" of "+questionsList.size()); 

     txtQuestion.setText(currentQuestion.getQUESTION()); 
     rbtnA.setText(currentQuestion.getOptionA()); 
     rbtnB.setText(currentQuestion.getOptionB()); 
     rbtnC.setText(currentQuestion.getOptionC()); 
     rbtnD.setText(currentQuestion.getOptionD()); 

     questionId++; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
      // Respond to the action bar's Up/Home button 
      case android.R.id.home: 
       NavUtils.navigateUpFromSameTask(this); 
       return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 
} 
+0

我無法通過整個代碼,你使用的片段顯示疑問或viewpagers? –

+0

片段用於我的代碼 –

+1

歡迎使用StackoverFlow。你可能要考慮讀命名頁:[問],然後用它的信息,使你的問題了一些有用的改變。有很多有用的信息,指南中,值得花幾分鐘閱讀全部。指南: - > [ask] < - – mike510a

回答

0

您是否使用獨立的活動爲每一個問題? 如果是,那麼你可以使用onBackPressed方法。

+0

不,對所有問題都一樣。 –

0

這將是您輕鬆回去質問,如果你爲數據庫中的每一個問題一個ID(ex.1,2,3 ..)和帶可變名爲id並單擊每次遞增ID下一個按鈕,並獲取問題匹配的ID,當你再次

+0

此代碼不適用於我//檢查並返回 btnBack.setOnClickListener(new View.OnClickListener(){ @Override public void的onClick(視圖v){ 如果(questionId> 0){ questionId--; //在這裏遞減 currentQuestion = questionsList.get(questionId); //這裏加載 setQuestionsView(); grp.clearCheck() ; } else { btnBack.setEnabled(false); } } }); –

+0

究竟發生了什麼,你可以詳細說明 – Bhavesh

+0

你不需要做所有這些東西只需減少問題id的值並調用set按鈕後按鈕按下 – Bhavesh

0

按後退按鈕遞減ID和再次讀取該問題...

在後退按鈕監聽器就遞減questionid並調用問題,你可以這樣做這通過兩種方法:

  • 創建一個按鈕而比按鈕鏈接到以前的活動
  • 創建方法onBackPressed這樣的代碼:

    @Override 
    public void onBackPressed() { 
    Intent intent = new Intent(OrderList.this, MainActivity.class); 
    startActivity(intent); 
    } 
    

你可以簡單地使用第二個代碼中的任何活動,帶你回到過去的活動。

希望這有助於!

+0

我只有一個活動的所有問題 –

+0

是的,你可以將上面的代碼粘貼onOptionItemSelected方法後 –

相關問題