As mentioned in the post "Activity will be re-started when screen orientation changed", onCreate() method will be called when orientation changed, to re-layout the screen. But in case of some views, such as EditText, the Android life-cycle mechanism will restore the states.

orientation changed


Here is a example, there are two EditText in the layout. The first one is assigned with a ID, it will update the TextView once text changed. The second one have no ID assigned. You can notice that the text in the first EditText (with ID) will keep no change after orientation changed, and onTextChanged() method of the TextChangedListener will be called also, to update the TextView.

On the other hand, the second EditText (without ID assigned) will clear to empty when orientation changed.

Layout
<LinearLayout 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:orientation="vertical"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" tools:context=".MainActivity" /> <TextView android:id="@+id/lasttext" android:layout_width="wrap_content" android:layout_height="wrap_content" tools:context=".MainActivity" /> <EditText android:id="@+id/intext" android:layout_width="match_parent" android:layout_height="wrap_content" tools:context=".MainActivity" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" tools:context=".MainActivity" /> </LinearLayout> 


package com.example.androidorientationchange; import android.os.Bundle; import android.app.Activity; import android.text.Editable; import android.text.TextWatcher; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity { TextView lastText; EditText inText; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lastText = (TextView)findViewById(R.id.lasttext); inText = (EditText)findViewById(R.id.intext); inText.addTextChangedListener(new TextWatcher(){ @Override public void afterTextChanged(Editable s) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { // TODO Auto-generated method stub lastText.setText(s); Toast.makeText(MainActivity.this, "onTextChanged: " + s, Toast.LENGTH_SHORT).show(); }}); Toast.makeText(MainActivity.this, "onCreate", Toast.LENGTH_LONG).show(); } } 


Next:
- Retrieve old activity state for configuration change by overriding onRetainNonConfigurationInstance() method

-- Delivered by Feed43 service

Related Posts

There is no other posts in this category.

Post a Comment

Subscribe Our Newsletter