2016-03-28 6 views
0

私はアンドロイド開発には初めてです。私は私がプレイするカードゲームのための基本的な追跡アプリケーションを作っています。 2つの異なる変数セットを追跡するには2つのアクティビティが必要です。私の質問は、私が変数を自分自身でリセットしても関係ありません。私は、アクティビティを切り替えるときに変数を格納するか、アクティビティを一時停止してから再開するだけです。ここで私の活動を切り替えるためのコードです。どのようにして2つのアクティビティの変数を失うことなく、2つの間を常に切り替えることができますか。主な活動のメソッドが最初であるアクティビティの切り替えはできますが、変数を保持

...活動を一時停止する前に、あなたの変数の状態を保存するには

public void showMainActivity() { 
    Intent myIntent = new Intent(this, MainActivity.class); 
    startActivity(myIntent); 
} 
+0

あなたの質問に詳細を追加することをお勧めします。 – Enzokie

答えて

1

第二の活動のための

public void showPWActivity(){  
    Intent myIntent = new Intent(this, Planeswalker.class);  
    startActivity(myIntent);  
} 

方法SharedPreferences使用:

// Access the default SharedPreferences 
    SharedPreferences preferences = 
    PreferenceManager.getDefaultSharedPreferences(this); 
    // The SharedPreferences editor - must use commit() to submit changes 
    SharedPreferences.Editor editor = preferences.edit(); 

    // Edit the saved preferences 
    editor.putString("Name", "Tom"); 
    editor.putInt("Age", 31); 
    editor.commit(); 

状態を取得する、

Intent i = new Intent(getApplicationContext(), NewActivity.class); 
i.putExtra("new_variable_name","value"); 
startActivity(i); 

次に、新しい活動に:

SharedPreferences preferences = 
    PreferenceManager.getDefaultSharedPreferences(this); 
String Name = preferences.getString("Name","Default"); 

を活動の間でデータを渡すために:あなたの現在の活動に

を、新しいIntentを作成し、あなたの活動を再開するときに、変数のそれらの値を取得します。ここでは、文字列を取得しています。

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String value = extras.getString("new_variable_name"); 
} 

このテクニックを使用して、あるアクティビティから別のアクティビティに変数を渡します。

+0

私の答えを編集しました – Automatik

-1

これを達成するにはさらに多くの方法があります。最も簡単なのonRestoreInstanceStateをオーバーライドして、onSaveInstanceState

は、バックグラウンドの魔女でサービスを作ることは、すべてのデータ保存されます検討し、より複雑なもののためにここに http://www.101apps.co.za/index.php/articles/saving-the-activity-s-instance-state-a-tutorial.html

http://developer.android.com/intl/es/training/basics/activity-lifecycle/recreating.html

protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    Log.i(TAG, "onSaveInstanceState"); 

    final EditText textBox = 
      (EditText) findViewById(R.id.editText1); 
    CharSequence userText = textBox.getText(); 
    outState.putCharSequence("savedText", userText); 

} 

protected void onRestoreInstanceState(Bundle savedState) {  
    Log.i(TAG, "onRestoreInstanceState"); 

    final EditText textBox = 
      (EditText) findViewById(R.id.editText1); 

    CharSequence userText = 
      savedState.getCharSequence("savedText"); 

    textBox.setText(userText); 
} 

を見ますあなたのアプリケーションの必要性。


そうしない SharedPreferences

を使用して活動を一時停止する前に、変数の状態を保存するには!データをローカルストレージに保存します(SharedPreferences =データをHDに保存する)。実際にデータを保存しないのと同じように、アプリケーションを閉じた後でも保存する必要があります。あなたが本当に必要なものでない限り、あなたのデスクトップアプリでHDドライブを使用することができます。

関連する問題