2012-12-17 3 views
0

나는 완벽한 기능의 퀴즈 게임이 있다고 생각합니다. 결과 페이지의 게임이 끝나면 스코어 (long)와 퍼센티지 (int)를 보여줍니다. 나는 rank (int), score (long) 및 percentage (int)와 같이 3 개의 변수가 입력되는 오프라인 SharePreferences 상한값을 구현하려고합니다. 처음에는 변수 중 하나를 사용하여 최고 점수를 구현하고 나중에 다른 2 점을 추가하려고했지만 나쁘게 실패하는 것 같습니다. 내 활동에서 내가 시도한 코드를 주석 처리 한 코드가 많이 있으며 다른 많은 시도가 이미 삭제 된 것을 볼 수 있습니다.SharedPreferences를 사용한 오프라인 상향 기록 - Android (java)

SharedPreferences를 사용하려고 한 것은 이번이 처음이기 때문에 아직 그것에 대한 확실한 이해가 없습니다.

Results.java 것은

요점은
public class Results extends Activity { 

    public static final String SP_NAME = "TEST"; 
    public static final String INT_PERCENTAGE = "SP_percentage"; 
    public static final String INT_RANK = "SP_rank"; 
    public static final String LONG_SCORE = "SP_score"; 
    private SharedPreferences mPrefs; 

    QuestionView qv = new QuestionView(); 
    ArrayList<Question> queryList = qv.getQueries(); 

    int cAnswers, wAnswers, percentage, rank; 

    long score; 

    ArrayList<Question> qs; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.resultsmain); 

     mPrefs = getSharedPreferences(SP_NAME, 0); 

     cAnswers = getIntent().getIntExtra("correctAnswers", -1); 
     wAnswers = getIntent().getIntExtra("wrongAnswers", -1); 
     score = getIntent().getLongExtra("score", -1); 

     qs = getIntent().getParcelableArrayListExtra("queries"); 

     Button mainmenuBtn = (Button)findViewById(R.id.mainmenuBtn); 
     mainmenuBtn.setText("Main Menu"); 

     mainmenuBtn.setOnClickListener(new OnClickListener() { 
      public void onClick(View arg0) { 
       restart(); 
      } 
     }); 

     //Retrieving high score 
     SharedPreferences mPrefs = getSharedPreferences(LONG_SCORE, 0); 
     SharePreferences.Editor editor = prefs.edit(); 
     long highscore = mPrefs.getLong(LONG_SCORE, 0); 

     //Saving current score as high score 
/*  SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); 
     SharedPreferences.Editor editor = settings.edit(); 
     editor.putInteger(HIGH_SCORE, currentScore);*/ 
     // Commit the edits! 
     editor.commit(); 

     SharedPreferences prefs = mContext.getSharedPreferences("preferencename", 0); 
/*  SharedPreferences.Editor editor = prefs.edit(); 
     return editor.commit();*/ 

     showResults(); 
    } 

    //...other code 
} 
+0

무엇이 문제입니까? 정확히 어디에서 문제가 있습니까? – thedan

+0

나는 완벽하게 작동하고 나에게 두 가지 가치 - 점수와 백분율을주는 프로그램을 가지고있었습니다. 내 질문은 이전에 작동하는 프로그램에 SharedPreference 최고 기록 테이블을 구현하는 방법입니다. 위의 코드에서 내 SP 코드를 볼 수는 있지만 컴파일 할 곳이 없습니다. 최고 점수 구현을 완료하는 방법에 대한 지침을 찾고 있습니다. – Matt

+0

StackOverflow에서 질문을하면 "여기에 몇 가지 코드가 있습니다. 해결 방법을 알려주세요."라는 질문에 대한 답변이 거의 없을 것입니다. 질문을 편집하여 수행하려는 작업, 코드가 수행하는 작업, "*이 왜 null을 반환합니까?"와 같은 * 특정 * 질문을 포함하면됩니다. "왜 이것이 작동하지 않는가?"대신에 의미있는 오류 출력 (logcat 또는 스택 출력의 스택 추적)이 있으면 다른 사람들이 무엇을 찾아야 할지를 알기 때문에 더 많은 답변을 얻게됩니다 먼저 도움이 필요한 것이 무엇인지 알아 내려고 노력했습니다. 질문을 수정하고 수정하십시오. –

답변

2

, 당신은 SharedPreference의 사용을 이해하지 못했다. 이 높은 점수를 얻으려면 SQLite 데이터베이스 나 텍스트 파일을 사용해야합니다.

가이드 http://developer.android.com/guide/topics/data/data-storage.html을 읽으면 안드로이드의 다양한 유형의 지속성 방법을보다 잘 이해할 수 있습니다.

현재 순위 (int), 점수 (long) 및 백분율 (int)의 3 개의 열이있는 테이블을 만들고 높은 점수를 얻으려면 약간의 CRUD를 수행해야합니다. SQLiteOpenHelper를 사용하고 테이블 생성 절차를 수행하는 방법을 이해해야합니다. 그런 다음 모델 클래스를 만들어 데이터를 관리하십시오.

developer.android.com 가이드를 읽은 후에도 여전히 의문 사항이있는 경우 Google에서 SQLite 자습서를 검색하십시오.

+0

나는 최고 점수 테이블을 구현하려고 할 때 나는 항상 다른 대답을 얻는 것처럼 보입니다. 많은 사람들이 SQLite DB를 사용하고 많은 사람들이 SharedPreferences를 사용한다고 말합니다. 어쨌든 도움을 주셔서 감사합니다. – Matt

1

당신의 질문에 대한 답변이 꽤 잘 나온 것 같지만, 저는 이것을 원근감있게 밖으로 던질 것입니다.

온라인 순위표 시스템을 로컬에서 관리하는 대신 쉽게 사용할 수 있습니다. 그것은 당신에게 좋은 일을 덜어주고 선수들이 전세계에서 쉽게 경쟁 할 수있는 이점을 줄 수 있습니다. 체크인 할 수있는 옵션은 Swarm (SwarmConnect), Scoreloop 또는 Papaya입니다. Swarm의 시스템은 아마도 가장 빠르고 쉬운 설치라고 생각할지라도, 3 가지 방법 모두 글로벌 리더 보드를 설치하고 실행할 수있는 방법을 제공합니다.

건배!