クリックすると EditText に変わる TextView を持つ単純なアプリケーションを作成しました。
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();
}
});
}
}
しかし、携帯電話を回転させると、入力したテキストが消え、View が TextView に戻ります。
携帯電話を回転させると、アクティビティが一時停止、停止、破棄され、再作成、再起動、再開されることがわかっています。しかし、どうすれば EditView をテキスト、フォーカスで維持できますか?
developer.android.com のアクティビティ ライフサイクル ガイドから何かを見逃している可能性が高いため、これは初歩的な質問であることはわかっています。