2016-03-19 18 views
1

データを保存しようとしていますが、画面が回転するたびにMemoという変数に格納しています。私はこれを行うときにどのように変数を保存するか分からない。ここで私はJavaと私のXMLに何を持っています。画面回転時にデータを保存する

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

パブリッククラスMainActivityはAppCompatActivity {

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final EditText Input = (EditText) findViewById(R.id.inputLine); 
    final TextView Memo = (TextView) findViewById(R.id.memo); 
    final Button button = (Button) findViewById(R.id.btnSubmit); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      final String sting = Input.getText().toString(); 
      Memo.setText(sting); 
     } 
    }); 
} 
@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    savedInstanceState.putSerializable("string",string); 
    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    // etc. 
} 
@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    String String = savedInstanceState.getString(string); 
} 
} 

ここでは、私のプロジェクトの視覚的に

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="edu.dtcc.bwharto9.rotationslab.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Please enter your memo below, then press Submit!" 
    android:id="@+id/textView" 
    android:layout_marginTop="28dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

<EditText 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:inputType="textMultiLine" 
    android:ems="10" 
    android:id="@+id/inputLine" 
    android:layout_marginTop="40dp" 
    android:hint="Enter your memo here" 
    android:layout_below="@+id/textView" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Submit" 
    android:id="@+id/btnSubmit" 
    android:layout_below="@+id/inputLine" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="31dp" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/memo" 
    android:layout_below="@+id/btnSubmit" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="123dp" /> 
</RelativeLayout> 

答えて

1

このような方法の外にある:

private String sting = ""; 

その後、onRestoreInstanceState(Bundle savedInstanceState)の内側に次のようにします。onSaveInstanceState(Bundle savedInstanceState)

sting = savedInstanceState.getString("string"); 

またして

savedInstanceState.putSerializable("string",string); 

を置き換える:

savedInstanceState.putString("string",sting); 
0

/**グローバルvaribaleとして文字列を宣言する*/

を与えるために私のxmlです拡張します
String sting=""; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
final EditText Input = (EditText) findViewById(R.id.inputLine); 
final TextView Memo = (TextView) findViewById(R.id.memo); 
final Button button = (Button) findViewById(R.id.btnSubmit); 
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     sting = Input.getText().toString(); 
     Memo.setText(sting); 
    } 
}); 
} 
@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 

    savedInstanceState.putString("string",string); 
    // Save UI state changes to the savedInstanceState. 
    // This bundle will be passed to onCreate if the process is 
    // killed and restarted. 
    // etc. 
super.onSaveInstanceState(savedInstanceState); 
} 
@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore UI state from the savedInstanceState. 
    // This bundle has also been passed to onCreate. 
    String String = savedInstanceState.getString(string); 
} 
} 
1

this w

private int someVarA; //class variable 
private String someVarB; //too 
private boolean someVarC;//too 

@Override 
public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) { 
    super.onSaveInstanceState(outState, outPersistentState); 
    outState.putInt("someVarA", someVarA); 
    outState.putString("someVarB", someVarB); 
    outState.putBoolean("someVarC", someVarC); 
} 
@Override 
protected void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    someVarA = savedInstanceState.getInt("someVarA"); 
    someVarB = savedInstanceState.getString("someVarB"); 
    someVarC = savedInstanceState.getBoolean("someVarc"); 
} 

幸運仲間:私にとってorkedは、私はあなたがそれに打撃を与えるかもしれないと思いました。

final String sting = Input.getText().toString(); 

代わりに、このように、グローバル刺す作るためにfinal Stringを削除します:

sting = Input.getText().toString(); 

を次に、必ず文字列があなたの内部グローバルとして宣言されていることを確認しますが、次の操作を行いonClick()メソッド内

関連する問題