2013-03-06 58 views
0

我已經編寫了一個簡單的應用程序,該應用程序具有一個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

回答

1

的基本概念是,你需要捕獲並保存當前狀態在活動被銷燬之前發生的生命週期事件中,然後將該保存的狀態應用到新創建的活動,然後在輪換之後重新創建活動

下面是一個(很多)很好的SO問題解決方案這個: Android: Efficient Screen Rotation Handling

0

你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> 

//希望它有助於