0

と を作成しましMainActivitySecondActivityonClick 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");

}
4

2 に答える 2

2

Gokhan が提案したように、データセットがそれほど大きくない場合は、共有設定を使用すると非常に効果的です。

一方、保存する類似のデータが多数ある場合は、sqlite3 データベースを使用してデータを保存します。リンク.

また、データを onStop() 関数に保存します。

于 2012-05-15T23:04:42.060 に答える
1

共有設定の使用が最適です。こちらを参照してください

編集:

  • あなたのコメントに応じて、以下にソースを追加しました。

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

これがうまくいくことを願っています。幸運を!

于 2012-05-15T22:54:42.347 に答える