2017-05-08 34 views
0

我有這段代碼來保存我點擊imageview的時間,但每次打開應用程序時,我看到的第一個數字都是0,但我希望立即看到「高分」。如何在打開應用程序時顯示保存的號碼?

public class MainActivity extends AppCompatActivity { 
private ImageView megg; 
int counter = 0; 
int readhighscore; 
private TextView mnumber; 

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

    mnumber = (TextView) findViewById(R.id.number); 
    mnumber.setText(Integer.toString(readhighscore)); 



    megg = (ImageView) findViewById(R.id.egg); 
    megg.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      counter++; 
      readhighscore = counter; 
      mnumber = (TextView) findViewById(R.id.number); 
      mnumber.setText(Integer.toString(readhighscore)); 



     } 

    }); 

    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
    counter = prefs.getInt("highscore", readhighscore); 


} 
@Override 
protected void onPause() { 
    super.onPause(); 

    SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt("highscore", readhighscore); 

    editor.commit(); 

} 
} 
+0

嘗試把'mnumber.setText'後,你實際上我得到這個錯誤信息的數量 –

回答

0

試試這個

public class MainActivity extends AppCompatActivity { 
    private ImageView megg; 
    int counter = 0; 
    int readhighscore; 
    private TextView mnumber; 

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

     mnumber = (TextView) findViewById(R.id.number); 
     mnumber.setText(Integer.toString(readhighscore)); 



     megg = (ImageView) findViewById(R.id.egg); 
     megg.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       counter++; 
       readhighscore = counter; 
       mnumber.setText(Integer.toString(readhighscore)); 



      } 

     }); 

     SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
     counter = prefs.getInt("highscore", readhighscore); 


    } 
    @Override 
    protected void onPause() { 
     super.onPause(); 

     SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putInt("highscore", readhighscore); 

     editor.commit(); 

    } 
@Override 
    protected void onResume() { 
     super.onResume();SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", Context.MODE_PRIVATE); 
     counter = prefs.getInt("highscore", readhighscore); 
     readhighscore = counter; 
     mnumber.setText(Integer.toString(readhighscore)); 
    } 
    } 
+0

很好謝謝<3 – Jessef

+0

歡迎您..... –

0

查找解決方法:

節能:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 
    SharedPreferences.Editor editor = prefs.edit(); 
    editor.putInt("highscore", storedPreference); 
    editor.apply(); 

檢索:

SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
int storedPreference = preferences.getInt("highscore", 0); // this value you can show in your UI. 

在你活動的onCreate()

if(preferences.contains("highscore)){ 
SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
int storedPreference = preferences.getInt("highscore", 0); 
number.setText(storedPreference+""); 
} 
+0

:錯誤:(62,81)錯誤:無法找到符號變量上下文 – Jessef

+0

把這個/ YourActivirty.this而不是上下文 – Rajasekhar

0

在這裏,您在megg的點擊塊之前第一次查找textview「mnumber」,第二次在megg的onclick事件塊內查找。我認爲你必須避免代碼「mnumber =(TextView)findViewById(R.id.number);」從第二塊。

相關問題