2016-04-02 51 views
0

它给我一个错误无法解析符号sharedpreferences,我试图给每次用户参加测验时添加一个高分,它记录测验的高分。我不知道发生了什么。请帮助我这个,我会帮助你与我们的声誉。使用共享偏好来存储高分

package com.example.quiz; 

import android.annotation.SuppressLint; 
import android.annotation.TargetApi; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Build; 
import android.os.Bundle; 
import android.os.CountDownTimer; 
import android.view.Gravity; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.ArrayList; 
import java.util.Random; 
import java.util.concurrent.TimeUnit; 
import java.util.logging.Handler; 

public class CS_Assembly_Easy extends Activity{ 

    TextView topscore; 

    public static final String mypreference = "mypref"; 
    public static final String Topscore = "topKey"; 

    ArrayList<Question> quesList; 
    ArrayList<Question> toSelectFrom; // <--- HERE 
    int score = 0; 
    int qid = 0; 
    int lives = 5; 
    int round = 1; 
    int timer; 




    Question currentQ; 
    TextView txtQuestion, times, scored, livess, rounds; 
    Button button1, button2, button3; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.cs_assembly_easy); 
     CS_Assembly_QuizHelper db = new CS_Assembly_QuizHelper(this); // my question bank class 
     quesList = db.getAllQuestions(); 
     toSelectFrom = new ArrayList<Question>(); // <--- HERE 
     toSelectFrom.addAll(quesList); // <--- HERE 
     Random random = new Random();// this will fetch all quetonall questions 
     currentQ = toSelectFrom.get(random.nextInt(toSelectFrom.size())); // the current question <-- edited here too. 
     toSelectFrom.remove(toSelectFrom.indexOf(currentQ)); // <--- HERE 
     txtQuestion = (TextView) findViewById(R.id.txtQuestion); 
     // the textview in which the question will be displayed 
     // the three buttons, 
     // the idea is to set the text of three buttons with the options from question bank 
     button1 = (Button) findViewById(R.id.button1); 
     button2 = (Button) findViewById(R.id.button2); 
     button3 = (Button) findViewById(R.id.button3); 

     // the textview in which will be displayed 
     scored = (TextView) findViewById(R.id.score); 
     // the timer 
     times = (TextView) findViewById(R.id.timers); 
     rounds = (TextView) findViewById(R.id.round); 
     // method which will set the things up for our game 
     setQuestionView(); 
     times.setText("00:02:00"); 
     // A timer of 60 seconds to play for, with an interval of 1 second (1000 milliseconds) 
     CounterClass timer = new CounterClass(60000, 1000); 
     timer.start(); 
     // button click listeners 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // passing the button text to other method 
       // to check whether the anser is correct or not 
       // same for all three buttons 
       getAnswer(button1.getText().toString()); 
      } 
     }); 
     button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getAnswer(button2.getText().toString()); 
      } 
     }); 
     button3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       getAnswer(button3.getText().toString()); 
      } 
     }); 

     topscore = (TextView) findViewById(R.id.Topscore); 
     sharedpreferences = getSharedPreferences(mypreference, 
       Context.MODE_PRIVATE); 
     if (sharedpreferences.contains(topscore) > score) { 
      topscore.setText(sharedpreferences.getString(topscore, "")); 
     } 

    } 

    public void Save(View view) { 
     String n = topscore.getText().toString(); 
     SharedPreferences.Editor editor = sharedpreferences.edit(); 
     editor.putString(Topscore, n); 
     editor.commit(); 
    } 
    public void clear(View view) { 
     topscore = (TextView) findViewById(R.id.Topscore); 
     topscore.setText(""); 

    } 
    public void Get(View view) { 
     topscore = (TextView) findViewById(R.id.Topscore); 
     sharedpreferences = getSharedPreferences(mypreference, 
       Context.MODE_PRIVATE); 
     if (sharedpreferences.contains(topscore)) { 
      topscore.setText(sharedpreferences.getString(topscore, "")); 
     } 

     } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    public void getAnswer(String AnswerString) { 
     if (currentQ.getANSWER().equals(AnswerString)) { 
      // if conditions matches increase the int (score) by 1 
      // and set the text of the score view 
      score++; 
      scored.setText(" Score : " + score); 

      LayoutInflater inflater = getLayoutInflater(); 
      // Inflate the Layout 
      View layout = inflater.inflate(R.layout.correct, 
        (ViewGroup) findViewById(R.id.custom_toast_layout)); 

      TextView text = (TextView) layout.findViewById(R.id.textToShow); 
      // Set the Text to show in TextView 
      text.setText("CORRECT"); 
      text.setTextSize(25); 

      Toast toast = new Toast(getApplicationContext()); 
      toast.setGravity(Gravity.BOTTOM, 0, 50); 
      toast.setDuration(Toast.LENGTH_SHORT); 
      toast.setView(layout); 
      toast.show(); 





     } else if(lives > -10){ 

      LayoutInflater inflater = getLayoutInflater(); 
      // Inflate the Layout 
      View layout = inflater.inflate(R.layout.wrong, 
        (ViewGroup) findViewById(R.id.custom_toast_layout)); 

      TextView text = (TextView) layout.findViewById(R.id.textToShow); 
      // Set the Text to show in TextView 

      text.setText("WRONG"); 
      text.setTextSize(25); 

      Toast toast = new Toast(getApplicationContext()); 
      toast.setGravity(Gravity.BOTTOM, 0, 50); 
      toast.setDuration(Toast.LENGTH_SHORT); 
      toast.setView(layout); 
      toast.show(); 


     } 

     else { 
      Intent intent = new Intent(CS_Assembly_Easy.this, 
        ResultActivity_Assembly_Easy.class); 
      Bundle b = new Bundle(); 
      b.putInt("score", score); // Your score 
      intent.putExtras(b); // Put your score to your next 
      startActivity(intent); 
      finish(); 

     } 

     { 


     } 
     if (qid < 10) { 
      // if questions are not over then do this 

      Random random = new Random(); 
      currentQ = toSelectFrom.get(random.nextInt(toSelectFrom.size())); // <<--- HERE 
      toSelectFrom.remove(toSelectFrom.indexOf(currentQ)); // <<--- AND HERE 
      setQuestionView(); 
      round++; 
      rounds.setText(" Question:" + round + "/10"); 






     } else { 
      // if over do this 
      Intent intent = new Intent(CS_Assembly_Easy.this, 
        ResultActivity_Assembly_Easy.class); 
      Bundle b = new Bundle(); 
      b.putInt("score", score); // Your score 
      intent.putExtras(b); // Put your score to your next 
      startActivity(intent); 
      finish(); 
     } 
    } 
    @TargetApi(Build.VERSION_CODES.GINGERBREAD) 
    @SuppressLint("NewApi") 
    public class CounterClass extends CountDownTimer { 
     public CounterClass(long millisInFuture, long countDownInterval) { 
      super(millisInFuture, countDownInterval); 
      // TODO Auto-generated constructor stub 
     } 
     @Override 
     public void onFinish() { 
      times.setText("Time is up"); 
     } 
     @Override 
     public void onTick(long millisUntilFinished) { 
      // TODO Auto-generated method stub 
      long millis = millisUntilFinished; 
      String hms = String.format(
        "%02d:%02d:%02d", 
        TimeUnit.MILLISECONDS.toHours(millis), 
        TimeUnit.MILLISECONDS.toMinutes(millis) 
          - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS 
          .toHours(millis)), 
        TimeUnit.MILLISECONDS.toSeconds(millis) 
          - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS 
          .toMinutes(millis))); 
      System.out.println(hms); 
      times.setText(hms); 
     } 
    } 

    private void setQuestionView() { 
     // the method which will put all things together 

     txtQuestion.setText(currentQ.getQUESTION()); 
     button1.setText(currentQ.getOPTA()); 
     button2.setText(currentQ.getOPTB()); 
     button3.setText(currentQ.getOPTC()); 
     qid++; 

    } 

    @Override 
    public void onBackPressed() { 
     return; 
    } 

} 

回答

0

sharedpreferences未在您的CS_Assembly_Easy类中定义。
尝试将您的代码更改为:

SharedPreferences sharedpreferences = getSharedPreferences(mypreference, 
      Context.MODE_PRIVATE);