如何防止视图在旋转过程中更改

问题描述:

我已经编写了一个简单的应用程序,该应用程序具有一个TextView,单击它时会更改为EditText。如何防止视图在旋转过程中更改

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class Main extends Activity { 
    static Context context; 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     context = this; 
     LinearLayout lL = new LinearLayout(this); 
     TextView tv1 = new TextView(this); 
     tv1.setText("tv1"); 
     tv1.setClickable(true); 
     lL.addView(tv1); 
     setContentView(lL); 
     tv1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       LinearLayout parent = (LinearLayout) v.getParent(); 
       parent.removeAllViews(); 
       EditText eT = new EditText(context); 
       eT.setHint("Enter text here"); 
       parent.addView(eT, -1, -2); 
       eT.requestFocus(); 
      } 
     }); 
    } 
} 

但是,当我旋转手机时,我输入的文本消失,并且视图返回到TextView。

我知道,当我旋转手机时,活动暂停,停止,被销毁,被重新创建,重新启动,再次恢复。但是我怎样才能让我的EditView保持文本,焦点......?

我知道这是一个noobish的问题,因为我最有可能错过了活动的生命周期指南的东西从developer.android.com

的基本概念是,你需要捕获并保存当前状态在活动被销毁之前发生的生命周期事件中,然后将该保存的状态应用到新创建的活动,然后在轮换之后重新创建活动

下面是一个(很多)很好的SO问题解决方案这个: Android: Efficient Screen Rotation Handling

你c在一个清单文件。这个修改将有助于不会改变orientation.I认为会解决你的问题

<activity 
      android:name="com.example.bizzapp.StitchdMain" 
      android:alwaysRetainTaskState="true" 
      android:keepScreenOn="true" 
      android:screenOrientation="landscape" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 

//希望它有助于