0

実際のデバイスでアプリケーションをデバッグするのがどのように見えるかを確認していました。次のコードは、ボタンが繰り返し押された回数に応じてボタンのテキストを変更するだけです。

完全に増加していましたが、デバイスを傾けて横向きに切り替えると、ボタンのテキストが初期状態に変わりました。もう一度押してもう一度傾けると、値が再びリセットされました。

バックグラウンドで何が起こっているのですか?そしてそれを止める方法は?

b.setOnClickListener( new OnClickListener() {
    int i = 1;

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        // Toast.makeText(MainActivity.this, "Pressed ", Toast.LENGTH_SHORT).show();
        b.setText("press "+ i);
        i++;
    }
});
4

6 に答える 6

3

デバイスを傾けると、アクティビティが破棄され、oncreateが再度呼び出されます。再起動時に取得したい値を保持する必要があります。それを行うにはいくつかの方法があります。ショートカットでは、マニフェストファイルのActivityにandroid:configchanges="orientation"というフラグを追加するだけです。

<activity
            android:name=".Splash"
            android:configChanges="orientation"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.NoTitleBar" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

onPauseまたはonBundleSaveinstanceライフサイクルコールバックメソッドに値を保存します。

于 2012-08-22T06:57:26.090 に答える
2

はい、アクティビティが再開されるためです。向きの変更に関するデータを保存したインスタントに保存する必要があります。そうでない場合は、アクティビティの向きの変更を制限する必要があります。

于 2012-08-22T06:55:55.667 に答える
2

向きが変わるとデータが失われるため、onSaveInstanceStateを使用してデータを保存する必要があります。Google onSaveInstanceStateで、それでも問題が解決しない場合はお問い合わせください。

于 2012-08-22T06:58:47.903 に答える
1

android:screenOrientation="landscape"AndroidManifest.xmlで割り当てる必要があります。次のコードを見てください。

<application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".MainActivity" android:label="@string/app_name" android:screenOrientation="landscape" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
于 2012-08-22T06:55:38.203 に答える
1

画面の向きが変更されると、アクティビティは破棄されて再作成されます。

1つの方向にロックすることができます。

また

onSaveInstanceStateを使用してアプリケーションの状態を保存し、onCreateまたはonRestoreInstanceStateで復元します

于 2012-08-22T07:03:19.567 に答える
0

アクティビティの向きが変わるたびにアクティビティが再起動されます(onCreateが呼び出されます)。これを回避するには、androidmanifest android:configChanges="orientation"でアクティビティに設定できます。

于 2012-08-22T06:58:35.143 に答える