Android 如何保存onActivityResult结果?

Android 如何保存onActivityResult结果?,android,Android,我创建了一个main活动和一个second活动。当onClickmain活动时,它启动second活动。当SecondActivityfinish时,它返回一个值,该值将打开ImageView.setVisibility(View.VISIBLE)并生成一个计数器+ 我的问题是,当我关闭应用程序,然后再次重新启动它时,所有的值都被清除,我的ImageView变成ImageView.setVisibility(View.INVISIBLE)

我创建了一个
main活动
和一个
second活动
。当
onClick
main活动
时,它启动
second活动
。当
SecondActivity
finish时,它返回一个值,该值将打开
ImageView.setVisibility(View.VISIBLE)
并生成一个
计数器+

我的问题是,当我关闭应用程序,然后再次重新启动它时,所有的值都被清除,我的
ImageView
变成
ImageView.setVisibility(View.INVISIBLE)计数器==0

即使关闭应用程序或重新启动手机,如何保存数据(第二次活动的结果)?我想在每次重新启动应用程序时关闭应用程序之前,将
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");

}

使用共享首选项最适合您,请参阅

编辑:

  • 添加以下来源以回应您的评论

    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();
    }
    

我希望这对您有用。祝您好运!

使用共享首选项最适合您,请参阅

编辑:

  • 添加以下来源以回应您的评论

    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();
    }
    

我希望这对你有用。祝你好运!

如果你的数据集不是很大,就像Gokhan建议的那样,使用共享偏好对你真的很好

但是,如果有很多类似的数据要存储,请使用sqlite3数据库来存储数据


另外,将数据存储在onStop()函数中。

如果您的数据集不是很大,就像Gokhan建议的那样,使用共享首选项对您非常有益

但是,如果有很多类似的数据要存储,请使用sqlite3数据库来存储数据


另外,将数据存储在onStop()中函数。

谢谢,但我做得不对。我已经写了我的代码,你能看一下吗?谢谢,但我做得不对。我已经写了我的代码,你能看一下吗?谢谢,但我做得不对。我已经写了我的代码,你能看一下吗?非常感谢,contadorliga工作得很好。但是我怎样才能保存正确的1.setVisib可变性(View.VISIBLE);?谢谢,但我做得不对。我已经写了代码,你能看一下吗?非常感谢,contadorliga工作得很好。但是如何保存正确的1.setVisibility(View.VISIBLE)?