私は最初のアプリを構築しており、ほぼ完了しています。(イェーイ!) あとは、向きを変えたり、キーボードを引き出したりするときに使用する onConfigurationChange の Java をセットアップするだけです。まず問題は、setContentView メソッドによって新しい新しいレイアウトが配置されるため、向きが変わるとすべてが消去されることです。これはもちろん理にかなっていますが、方向/キーボードが変更されたときに edittext と textview の値を一定に保つことができる方法または可能な回避策があるかどうか疑問に思っていました。setContentView の前に文字列値を取得するなど、さまざまなことを試しましたが、これは NullPointerException になるだけであることがわかりました。
基本的に、私は edittext と textview の値を向きや変更内容と同じように維持しようとしています。
参照用に私のコードの簡単な要約を次に示します
これは実際のコードではなく、私がやっていることの要約です。
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//do some stuff that is the core of the app. Nothing that would impact this question though
}
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
setContentView(R.layout.landscape);
// same code that was within the onCreate. Just doing stuff related to my app
}if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
setContentView(R.layout.main);
// same code that was within the onCreate. Just doing stuff related to my app
}
}
' }
はい、私は自分の AndroidManifest ファイルに android:configChanges="orientation|keyboardHidden" を書きました。アプリは正常に動作します。テキスト ビューと編集テキストが更新されていません。ありがとう!