0

アクティビティが最初に開始されたときにレイアウトを動的に作成しています。問題は、画面が回転すると、レイアウトを作成するためにデータベースに再度アクセスすることです。画面の向きが変わるたびにレイアウトが再作成されないように、レイアウトを保存するにはどうすればよいですか?

4

3 に答える 3

1

とった!フラグメントを作成し、onCreate 中に動的に作成されるビューの ArrayList をロードします。setRetainInstance(true); を設定します。onPause はビューをクリアし、onResume は ArrayList からビューをリロードします。setRetainInstance(true) では、onCreate が再度呼び出されないため、DB からロードされません。

于 2012-05-10T18:33:59.243 に答える
0

あなたが使用することができます

@Override
protected void onSaveInstanceState(Bundle outState) {
    // SAVE YOUR DATA IN "outstate" BUNDLE
    super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    // RESTORE YOUR DATA FROM savedInstanceState.
    super.onRestoreInstanceState(savedInstanceState);
}

データ バンドルを保存し、onRestoreInstanceState で再度復元します

ここに例があります..

public class Test_stflowActivity extends Activity {
    String initial_text = null;
    boolean already_created = false;
    TextView tv = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        tv = (TextView) findViewById(R.id.textView1);

        if (savedInstanceState == null) {
            initial_text = "bharat";
            loadNew();
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        initial_text = "sharma";
        outState.putString("initial_text", initial_text);
        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        initial_text = savedInstanceState.getString("initial_text");
        loadNew();
        super.onRestoreInstanceState(savedInstanceState);
    }

    void loadNew() {
        tv.setText(initial_text);
    }
}

ここにxmlレイアウトがあります

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="139dp"
        android:text="Large Text"
        android:textAppearance="?android:attr/textAppearanceLarge" />

</RelativeLayout

>

于 2012-05-10T04:45:10.613 に答える
0

デフォルトの回転動作をオーバーライドするためのドキュメントを確認してください: http://developer.android.com/guide/topics/resources/runtime-changes.html

于 2012-05-10T02:44:54.440 に答える