我创建了MainActivity
和SecondActivity
。当onClick
MainActivity
启动SecondActivity
时。 SecondActivity
完成后,会返回一个值ImageView.setVisibility(View.VISIBLE);
并生成counter++
的值。
我的问题是,当我关闭应用程序然后再次重新启动时,所有值都被清除,我的ImageView
再次转为ImageView.setVisibility(View.INVISIBLE);
和counter == 0
。
即使关闭应用程序或重新启动移动设备,如何保存数据(SecondActivity
的结果)?我想在每次重新启动它时关闭应用程序之前设置public void onCreate(Bundle savedInstanceState) {
。
我想要的是保存“int contadorliga”,“correcto1.setVisibility(View.VISIBLE);”和“correcto2.setVisibility(View.VISIBLE);”因此,每次我重新启动应用程序时,它都是最新的时间。这是我的代码:
package com.fakur.android.futbolquiz;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
public class Liga extends Activity {
/** Called when the activity is first created. */
static final int LIGA = 0;
int contadorbarcelona = 0;
int contadormadrid = 0;
int contadorliga = 0;
ImageView about;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.liga);
TextView contador1 = (TextView) findViewById(R.id.contador1);
contador1.setText(contadorliga + "/20");
}
public void onBarcelonaClick(View botton) {
Intent intent = new Intent();
intent.setClass(this,Pregunta.class);
intent.putExtra("Barcelona", "Barcelona");
startActivityForResult(intent,LIGA);
}
public void onMadridClick(View botton) {
Intent intent = new Intent();
intent.setComponent(new ComponentName(this,Pregunta.class));
intent.putExtra("Madrid", "Madrid");
startActivityForResult(intent,LIGA);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
TextView contador1 = (TextView) findViewById(R.id.contador1);
ImageView correcto1 = (ImageView) findViewById(R.id.correcto1);
ImageView correcto2 = (ImageView) findViewById(R.id.correcto2);
if (requestCode == LIGA){
if (resultCode == 1) {
if(contadorbarcelona == 0){
correcto1.setVisibility(View.VISIBLE);
contadorliga++ ;
contadorbarcelona++;
}
}
if (resultCode == 2) {
if(contadormadrid == 0){
correcto2.setVisibility(View.VISIBLE);
contadorliga++ ;
contadormadrid++;
}
}
}
contador1.setText(contadorliga + "/20");
}
答案 0 :(得分:2)
如果您的数据集不是很大,就像Gokhan建议的那样,使用共享偏好对您来说非常有用。
虽然,如果你有很多类似的数据要存储,使用sqlite3数据库来存储你的数据。 Link
此外,将数据存储在onStop()函数中。
答案 1 :(得分:1)
最适合使用共享偏好设置,请参阅here
编辑:
在回复您的评论时添加了以下内容;
private static final String PREFERENCES_CONTADORLIGA = "ChangeThisTextWithSomethingYouPrefer";
private static final String PREFERENCES_CONTADORLIGA_KEY = "ChangeThisTextWithSomethingYouPrefer";
public void onCreate(Bundle savedInstanceState)
{
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFERENCES_CONTADORLIGA, Context.MODE_PRIVATE);
contadorliga = settings.getInt(PREFERENCES_CONTADORLIGA_KEY, 0);
}
protected void onDestroy()
{
super.onDestroy();
// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFERENCES_CONTADORLIGA, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putInt(PREFERENCES_CONTADORLIGA_KEY, contadorliga);
// Commit the edits!
editor.commit();
}
我希望这对你有用。祝你好运!