2016-06-15 5 views
2

나는 이것을 고칠 수있는 방법이 없습니다. 제발 도와주세요!앱 종료 후 정수 값 저장하기

사용자가 버튼을 누를 때마다 숫자를 보여주는 카운터 앱을 만들고 있습니다. 0부터 최대 9999까지입니다. 내 문제는 사용자가 앱을 닫은 후에 다시 0에서 시작하지만 사용자가 다시 앱을 열 때 0 대신에 마지막으로 누른 숫자를 표시한다는 것입니다. 나는 많은 공유 환경 설정 코드를 시도했지만 그들 중 누구도 일하지 않았다. 여기 내 코드는 다음과 같습니다

import android.content.Context; 
import android.content.SharedPreferences; 
import android.media.MediaPlayer; 
import android.preference.PreferenceManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.TextView; 

public class MainActivity extends AppCompatActivity { 

    private int x; 
    Context context = this; 
    MediaPlayer mp; 

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


     final TextView number=(TextView) findViewById(R.id.numbers); 
     ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn); 
     ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn); 
     mp = MediaPlayer.create(context, R.raw.button_press); 

     number.setText(String.format("%04d", x)+""); 

     btn_count.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        if (mp.isPlaying()) { 
         mp.stop(); 
         mp.release(); 
         mp = MediaPlayer.create(context, R.raw.button_press); 
        } mp.start(); 
       } catch(Exception e) { e.printStackTrace(); } 
       x = x +1; 
       number.setText(String.format("%04d", x)+""); 
      } 
     }); 

     btn_reset.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       try { 
        if (mp.isPlaying()) { 
         mp.stop(); 
         mp.release(); 
         mp = MediaPlayer.create(context, R.raw.button_press); 
        } mp.start(); 
       } catch(Exception e) { e.printStackTrace(); } 
       x=0; 
       number.setText(String.format("%04d", x)+""); 
      } 
     }); 
    } 
} 
+0

공유 환경 설정 코드도 추가하십시오. –

답변

0

는이 같은 뭔가를 할 수 SharedPreferences를 사용하여 ... 당신이 얻을 기본 설정이 0 인 경우는 0에서 게임을 한 beging 수 아무것도, 이전에 저장되지 않은 것을 의미합니다, 저장 및 확인 무엇인지 확인
public class MainActivity extends AppCompatActivity { 

    private int x; 
    SharedPreferences prefs; 

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

     prefs = PreferenceManager.getDefaultSharedPreferences(this); 
     x = prefs.getInt("count", 0); 

     final TextView number=(TextView) findViewById(R.id.numbers); 
     ImageButton btn_count=(ImageButton) findViewById(R.id.btn_countn); 
     ImageButton btn_reset=(ImageButton) findViewById(R.id.btn_resetn); 

     number.setText(String.valueOf(x)); 

     btn_count.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       x++; 
       prefs.edit().putInt("count", x).apply(); 
       number.setText(String.valueOf(x)); 
      } 
     }); 

     btn_reset.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       x=0; 
       prefs.edit().putInt("count", x).apply(); 
       number.setText(String.valueOf(x)); 
      } 
     }); 
    } 
} 
+0

당신 덕분에 :) 내 하루 친구를 구해 줬어. :) –

1

당신은이에 대한 Android Preferences 사용해야합니다 :

어떻게?

앱이 닫혀지고시기를 정의하고 카운터의 실제 값을 쓸 수있는 다음 메소드를 호출

SharedPreferences buttonCounterValue = getSharedPreferences("counter", Activity.MODE_PRIVATE); 
SharedPreferences.Editor editor = buttonCounterValue.edit(); 
editor.putInt("myCounter", i); // 
editor.commit(); 

를 앱이 열려있을 때 다시 호출해야합니다 다른 방법으로 다시 읽어 ...

예 :

SharedPreferences buttonCounterValue = getPreferences(Activity.MODE_PRIVATE); 
int storedCounter = buttonCounterValue.getInt("myCounter", 0); 
:그래서
+0

고마워. 고정 : –