2017-08-26 6 views
0

のステップであるデバイスの回転の後に設定されていませんローテーション後にアクティビティが再作成されるため、EditTextは再び「hello」に設定されます。ただし、EditTextは空です。コード:のEditTextは、次のように

public class MainActivity extends AppCompatActivity { 

EditText editText; 

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

    editText = (EditText) findViewById(R.id.editText1); 
    editText.setText("hello"); 
} 
} 
+0

あなたはmanifest.xmlにして、あなたの活動に何らかのフラグを追加しましたを使用する必要がありますか? –

+0

いいえAndroidStudioに空のアクティビティを作成しましたが、xmlレイアウトは追加のプロパティ(ID、レイアウト幅、レイアウトの高さのみ)なしでこのEditTextだけで構成されます – jreft56

+0

レイアウトファイルではなくManifest.xmlについて質問しています –

答えて

2

のためにあなたのmanifest.xmlファイルに追加して、XMLレイアウトであなたのEditText仕様に以下を追加してください:

android:saveEnabled="false" 
+0

これは動作しています!ありがとう – jreft56

0

そのアクティビティのマニフェストファイルにconfigChanges制約を追加します。

+0

あなたはandroid:configChanges = "orientation"を意味しますか?差はありません – jreft56

+0

はい。オリエンテーションを追加|スクリーンサイズ –

0

そのActivity

 <activity 
     android:name=".SignUpActivity" 
     android:configChanges="orientation|screenSize|keyboardHidden"  
     android:label="@string/app_name" 
     /> 
2

手動で保存されたインスタンスの状態を使用して、そうしなければなりません。 Helloを保存するだけではありません。これは非常に一般的な使用例です。ユーザーが何かを入力した後、電話機を回転させるとします。何らかの理由でテキストが消えた場合、ユーザーはすべてを入力する必要があります。だからあなたはどこかにテキストを保存しなければならない。

https://developer.android.com/guide/topics/resources/runtime-changes.html

それでは、あなたがしなければならないことは次のとおりです。

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    //Here savedStateValue is a global string 
    savedStateValue = //Get the Text From Edit Text here; 
    outState.putString("savedStateKEY", savedStateValue); 
} 

とのonCreateで、このような何か:

if (savedInstanceState != null) { 
     //Restore the Text to EditText 
     editText.setText(savedInstanceState.getString("savedStateKEY")); 
    } 

EDIT 2番目の部分はあるがなぜそれが起こっているのですか?これは、 "Hello"テキストを削除し、画面の向きが変更されたため、初期状態から渡されたBundleからデータを復元しているためです。そのバンドルには、手動で削除したため、「Hello」はありません。あなたは

android:saveEnabled="false" 

を使用している場合 だから次に、あなたはのEditText内の任意の状態を保存しないようにアンドロイドを作っています。

+0

これは実際の問題に対処する唯一の答えです。 configChangesを含む他のすべての答えは、ビューを回転させないことで問題を回避するように指示するだけです。この回答に記載されているように状態を復元する方法を学ぶ方がずっと良いでしょう。 –

-1

EditTextは、デバイスの向きの変更に永続的である、あなたの代わりにTextView

+0

役に立たなかったTextViewはEditTextの代替物ではありません。 EditTextを使用している場合は、おそらくテキストを編集することができます。ここでの答えは、EditTextの状態を復元することです。アマンの答えを見てください。 –

関連する問題