2016-12-28 15 views
0

私のアプリケーションの一部を作成しようとしましたが、壁に当たっています。リストからドロップダウンを追加すると、新しいアクティビティに移動して別のアクティビティを追加します。次に、活動に戻ると、前のドロップダウン選択が消えました。アクティビティの再起動時に編集テキストフィールドを保存する方法

最初のドロップダウン選択を保存する方法はありますか?アクティビティに戻るときにまだアクティビティに戻るようにしますか?

以下は、ドロップダウンからオプションを追加するコードです。

public String s; 

TextView myLocationText; 
TextView myLocationText2; 
TextView myLocationText3; 
TextView myLocationText4; 
TextView myLocationText5; 

EditText textCheck; 
EditText textCheck2; 
EditText textCheck3; 
EditText textCheck4; 
EditText textCheck5; 

static int i = 1; 

TextView testView; 

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

    s = getIntent().getStringExtra("SELECTED_ACTIVITY"); 

    //Display selected activity in log 
    Log.d("SecondActivity::" + s, "Extra"); 

    textCheck = (EditText) this.findViewById(R.id.sampleTextData); 
    textCheck2 = (EditText) this.findViewById(R.id.sampleTextData2); 
    textCheck3 = (EditText) this.findViewById(R.id.sampleTextData3); 
    textCheck4 = (EditText) this.findViewById(R.id.sampleTextData4); 
    textCheck5 = (EditText) this.findViewById(R.id.sampleTextData5); 

    //Display selected activity 
    if ((textCheck.getText().toString().equals("")) && i == 1) { 
     myLocationText = (TextView) findViewById(R.id.sampleTextData); 
     myLocationText.setText(s); 
     i++; 
    } else if ((textCheck2.getText().toString().equals("")) && i == 2) { 
     myLocationText2 = (TextView) findViewById(R.id.sampleTextData2); 
     myLocationText2.setText(s); 
     i++; 
    } else if ((textCheck3.getText().toString().equals("")) && i == 3) { 
     myLocationText3 = (TextView) findViewById(R.id.sampleTextData3); 
     myLocationText3.setText(s); 
     i++; 
    } else if ((textCheck4.getText().toString().equals("")) && i == 4) { 
     myLocationText4 = (TextView) findViewById(R.id.sampleTextData4); 
     myLocationText4.setText(s); 
     i++; 
    } else if ((textCheck5.getText().toString().equals("")) && i == 5) { 
     myLocationText5 = (TextView) findViewById(R.id.sampleTextData5); 
     myLocationText5.setText(s); 
     i++; 
    } 

私はそのクリーナー、上記のコードから自分のコードを編集していると私は、私は必要なものの、まだ運の多くを持っていないと信じて保存する機能が含まれています。下記参照。活動の

public String s; 

EditText textCheck; 
EditText textCheck2; 
EditText textCheck3; 
EditText textCheck4; 
EditText textCheck5; 

static int i = 1; 

TextView testView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view_activity_second); 
    s = getIntent().getStringExtra("SELECTED_ACTIVITY"); 

    //Display selected activity in log 
    Log.d("SecondActivity::" + s, "Extra"); 

    //Look for saved text from activity 
    textCheck = (EditText) this.findViewById(R.id.sampleTextData); 
    if(savedInstanceState != null) { 
     String editTextString = savedInstanceState.getString("textCheck"); 
     textCheck.setText(editTextString); 
    } 
    textCheck2 = (EditText) this.findViewById(R.id.sampleTextData2); 
    if(savedInstanceState != null) { 
     String editTextString2 = savedInstanceState.getString("textCheck2"); 
     textCheck2.setText(editTextString2); 
    } 
    textCheck3 = (EditText) this.findViewById(R.id.sampleTextData3); 
    if(savedInstanceState != null) { 
     String editTextString3 = savedInstanceState.getString("textCheck3"); 
     textCheck3.setText(editTextString3); 
    } 
    textCheck4 = (EditText) this.findViewById(R.id.sampleTextData4); 
    if(savedInstanceState != null) { 
     String editTextString4 = savedInstanceState.getString("textCheck4"); 
     textCheck4.setText(editTextString4); 
    } 
    textCheck5 = (EditText) this.findViewById(R.id.sampleTextData5); 
    if(savedInstanceState != null) { 
     String editTextString5 = savedInstanceState.getString("textCheck5"); 
     textCheck5.setText(editTextString5); 
    } 

    //Display selected activity 
    if ((textCheck.getText().toString().equals("")) && i == 1) { 
     textCheck.setText(s); 
     i++; 
    } else if ((textCheck2.getText().toString().equals("")) && i == 2) { 
     textCheck2.setText(s); 
     i++; 
    } else if ((textCheck3.getText().toString().equals("")) && i == 3) { 
     textCheck3.setText(s); 
     i++; 
    } else if ((textCheck4.getText().toString().equals("")) && i == 4) { 
     textCheck4.setText(s); 
     i++; 
    } else if ((textCheck5.getText().toString().equals("")) && i == 5) { 
     textCheck5.setText(s); 
     i++; 
    } else if (i == 6){ 
     return; 
    } 
} 

//Save text within activity 
@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString("textCheck", textCheck.getText().toString()); 
    outState.putString("textCheck2", textCheck2.getText().toString()); 
    outState.putString("textCheck3", textCheck3.getText().toString()); 
    outState.putString("textCheck4", textCheck4.getText().toString()); 
    outState.putString("textCheck5", textCheck5.getText().toString()); 
} 

//Retrieve previous activity text 
@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    if (savedInstanceState!=null) { 
     textCheck.setText(savedInstanceState.getString("textCheck")); 
     textCheck2.setText(savedInstanceState.getString("textCheck2")); 
     textCheck3.setText(savedInstanceState.getString("textCheck3")); 
     textCheck4.setText(savedInstanceState.getString("textCheck4")); 
     textCheck5.setText(savedInstanceState.getString("textCheck5")); 
    } 
} 
+2

'onSaveInstanceState(bundle)'を使用し、 'onCreate(bundle)'バンドルに戻します。 –

+1

このコードはあなたに役立ちます:http://android-er.blogspot.in/2011/09/onsaveinstancestate-and.html – Anjali

+3

[saveInstanceState()メソッドをいつ使用するのですか?](http://stackoverflow.com)/question/18208611/when-to-use-saveinstancestate-method) –

答えて

1

オーバーライドOnSaveInstanceState()とは、一意のキーを使用して、バンドルに必要なすべての値を入れます。 Like:

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString("EDITTEXT", mEditText.getText().toString()); 
} 

同じキーを使用してonCreate(Bundle savedInstanceState)の値を取得します。同様に:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.view_activity_second); 
    textCheck = (EditText) this.findViewById(R.id.sampleTextData); 
    //this will be false for first time but will be true when activity recreates. 
    if(savedInstanceState != null) { 
     String editTextString = savedInstanceState.getString("EDITTEXT"); 
     textCheck.setText(editTextString); 
    } 
} 
+0

ありがとうございます、私はonSaveInstanceStateメソッドを作成し、私のonCreateメソッドでコードを追加しましたが、アクティビティに戻るときにドロップダウンから追加されたテキストまだ消えているようだ。 –

0

共有好み次に

SharedPreferences.Editor editor = getSharedPreferences(preferences1, 
MODE_PRIVATE).edit(); 
editor.putString("text", "editTextsString"); 
editor.commit(); 

でのEditTextの内容を保存活動に作成したりと共有好み呼び出し、再開:

SharedPreferences prefs = getSharedPreferences(preferences1, MODE_PRIVATE); 
String Text = prefs.getString("text", null); 

をまたにエディットテキストを設定文字列変数:テキスト

+0

あなたが 'onSaveInstanceState()'を持っているときにsharedPreferenceのような高価な操作をする理由。 –

+0

私はopの問題を解決するために私が考えることができる唯一の方法です - それはおそらく最も滑らかではありませんが、opの要求を達成すると思います。 –

0
public String s; 

TextView myLocationText; 
TextView myLocationText2; 
TextView myLocationText3; 
TextView myLocationText4; 
TextView myLocationText5; 

EditText textCheck; 
EditText textCheck2; 
EditText textCheck3; 
EditText textCheck4; 
EditText textCheck5; 

static int i = 1; 

TextView testView; 

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

    s = getIntent().getStringExtra("SELECTED_ACTIVITY"); 

    //Display selected activity in log 
    Log.d("SecondActivity::" + s, "Extra"); 

    textCheck = (EditText) this.findViewById(R.id.sampleTextData); 
    textCheck2 = (EditText) this.findViewById(R.id.sampleTextData2); 
    textCheck3 = (EditText) this.findViewById(R.id.sampleTextData3); 
    textCheck4 = (EditText) this.findViewById(R.id.sampleTextData4); 
    textCheck5 = (EditText) this.findViewById(R.id.sampleTextData5); 

    //Display selected activity 
    if ((textCheck.getText().toString().equals("")) && i == 1) { 
     myLocationText = (TextView) findViewById(R.id.sampleTextData); 
     myLocationText.setText(s); 
     i++; 
    } else if ((textCheck2.getText().toString().equals("")) && i == 2) { 
     myLocationText2 = (TextView) findViewById(R.id.sampleTextData2); 
     myLocationText2.setText(s); 
     i++; 
    } else if ((textCheck3.getText().toString().equals("")) && i == 3) { 
     myLocationText3 = (TextView) findViewById(R.id.sampleTextData3); 
     myLocationText3.setText(s); 
     i++; 
    } else if ((textCheck4.getText().toString().equals("")) && i == 4) { 
     myLocationText4 = (TextView) findViewById(R.id.sampleTextData4); 
     myLocationText4.setText(s); 
     i++; 
    } else if ((textCheck5.getText().toString().equals("")) && i == 5) { 
     myLocationText5 = (TextView) findViewById(R.id.sampleTextData5); 
     myLocationText5.setText(s); 
     i++; 
    } 


} 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    outState.putString("textCheck", textCheck.getText().toString()); 
    outState.putString("textCheck2", textCheck2.getText().toString()); 
    outState.putString("textCheck3", textCheck3.getText().toString()); 
    outState.putString("textCheck4", textCheck4.getText().toString()); 
    outState.putString("textCheck5", textCheck5.getText().toString()); 
} 

@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    if (savedInstanceState!=null) { 
     textCheck.setText(savedInstanceState.getString("textCheck")); 
     textCheck2.setText(savedInstanceState.getString("textCheck2")); 
     textCheck3.setText(savedInstanceState.getString("textCheck3")); 
     textCheck4.setText(savedInstanceState.getString("textCheck4")); 
     textCheck5.setText(savedInstanceState.getString("textCheck5")); 
    } 
} 

このコードをコピーして貼り付けてください。希望はそれは動作します。

+0

残念ながら、2つのボトムメソッドを追加しましたが、まだ保存していません。 –

+0

エラーが表示されますか? –

+0

エラーはありませんが、アプリは引き続き機能します。私は+ +のため、下のフィールドに他のアクティビティを追加しますが、上記のフィールドはまだアクティビティに戻ると空白に見えます。 –

0
Use OnSaveInstanceState() to save the value during restart of an activity . 

use below code : 

@Override 
protected void onSaveInstanceState(Bundle bundle) { 
    super.onSaveInstanceState(bundle); 
    bundle.putString("Key","Edit Text value"); 
} 

and get the data using below code : 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 
    if(savedInstanceState != null) { 
     String value = savedInstanceState.getString("Key"); 
    } 
} 
関連する問題