2017-07-21 19 views
0

値データは保存されますが、まだ保存されません。どうしてこれなの?onsaveInstancestate保存しないintが、私は、画面を回転しようとすると、それはデータを消去しませんが、私は活動から行くとカウンタ値をバックアップするとき、私は保存するための方法を作る設定している0</p> <p>に戻り

package com.example.navjeevenmann.mytycoon; 

    import android.content.Intent; 
    import android.os.Bundle; 
    import android.os.Handler; 
import android.support.v7.app.AppCompatActivity; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.TextView; 


public class MainActivity extends AppCompatActivity { 
private Button myButton; 
private int Counter = 0; 
private Button myButton2; 
private TextView myTextView; 
Handler handler = new Handler(); 
private int add = 0; 

@Override 
protected void onCreate(final Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (savedInstanceState != null) { 
     Counter = savedInstanceState.getInt("Count"); 
     add = savedInstanceState.getInt("Add"); 
    } 
    setContentView(R.layout.activity_main); 
    myButton = (Button) findViewById(R.id.button); 
    myButton2 = (Button) findViewById(R.id.button2); 
    myTextView = (TextView) findViewById(R.id.textView); 


    myButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Counter = ButtonCounter(Counter); 
     } 
    }); 
    myButton2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent intent = new Intent(getApplicationContext(), 
SecondActivity.class); 
      intent.putExtra("Count", Counter); 
      startActivity(intent); 
      finish(); 
     } 

    }); 

    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      Counter = AutoCounter(Counter, add); 
      Display(Counter, myTextView); 
      handler.postDelayed(this, 100); 
     } 
    }, 10); 


} 

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    savedInstanceState.putInt("Count", Counter); 
    savedInstanceState.putInt("Add", add); 

    super.onSaveInstanceState(savedInstanceState); 
} 


public int ButtonCounter(int Counter) { 
    Counter += 1; 
    return Counter; 
} 

public int AutoCounter(int Counter, int add) { 
    Counter += add; 
    return Counter; 
} 

public void Display(int Counter, TextView myTextView) { 
    String man = String.valueOf(Counter); 
    myTextView.setText("$" + man); 
} 


} 
+0

「私が活動から出たとき」とはどういう意味ですか?これはいつ起こるのですか?戻るボタンを押すか、2番目のアクティビティを開いたとき? –

+0

第2アクティビティを開く – Makk

+0

SecondActivityを開いたときにfinish()を呼び出すと、保存されたインスタンスの状態バンドルは保存されません。また、戻るボタンを押してアクティビティーを閉じるときの動作も同じです。 onSaveInstanceStateメソッドは、主に方向変更のデータを保存するために使用されます。カウンタを保存する場合は、SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.htmlを使用することを検討してください。 –

答えて

0

私のコードは

@Override 
protected void onSaveInstanceState(Bundle outState) 
{ 
    super.onSaveInstanceState(outState); 

    outState.putInt("Count", Counter); 
} 

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

    if (savedInstanceState != null) 
    { 
     if (savedInstanceState.containsKey("Count")) 
     { 
      Counter = savedInstanceState.getInt("Count"); 
     } 
    } 
} 

違いは、私が作成した上で、最終的なバンドルを持っていないということです...そのように動作し、私はsuper.onSave ..ウィッヒは奇妙に思えるの後にそれを保存します...