0

クリックすると 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 のアクティビティ ライフサイクル ガイドから何かを見逃している可能性が高いため、これは初歩的な質問であることはわかっています。

4

2 に答える 2

1

基本的な概念は、アクティビティが破棄される直前に発生するライフサイクルイベント中にアプリの現在の状態をキャプチャして保存し、ローテーション後に再作成された後、その保存された状態を新しく作成されたアクティビティに適用する必要があるということです。

これは、これに対処する(多くの)良いSOの質問の1つです: 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 に答える