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 保持它的文本,焦点......?

我知道这是一个愚蠢的问题,因为我很可能错过了 developer.android.com 的活动生命周期指南中的一些内容

4

2 回答 2

1

基本概念是,您需要在 Activity 被销毁之前发生的生命周期事件期间捕获并保存应用程序的当前状态,然后在旋转后重新创建后将保存的状态应用于新创建的 Activity

这是解决此问题的(许多)好的SO问题之一: Android:高效的屏幕旋转处理

于 2013-03-06T23:59:23.563 回答
0

您可以在清单文件中进行修改。这将有助于不改变方向。我认为会解决您的问题

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

//希望能帮助到你

于 2014-04-04T06:51:00.270 回答