1

アプリのすべてのアクティビティに対してマニフェストですべての許可を与えていましたが、携帯電話を回転させている間にアクティビティが再開されました。アラートボックスを閉じて再起動し、データとアクティビティを取得するためにWebサーバーを再度呼び出して、以前の状態を維持します。私はすべての可能性を試しましたが、解決策を得ることができません。この問題を解決するにはどうすればよいですか?

@Override
public void onCreate(Bundle savedInstanceState) 
{       
    super.onCreate(savedInstanceState);  
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.station_list_layout);

    ConstantValues.CURRENT_ACTIVITY=StationListActivity.this;

    ConstantValues.NEAREST_PLACE_MENU_SLIDER_FLAG=false;
    ConstantValues.MESSAGE_MENU_SLIDER_FLAG=false;
    ConstantValues.STATION_LIST_MENU_SLIDER_FLAG=true;

    orientation=getResources().getConfiguration().orientation;
    userAndMessageCount=new UserAndMessageCount();
    ((TextView)findViewById(R.id.stationlist_route_name)).setText(ConstantValues.ROUTE_NAME);
    list = (ListView) findViewById(R.id.myListView);  
    Cursor cursor=new UpdateLocalDatabase().getStationNameByRoute();
    adapter=new StationListAdapter(StationListActivity.this, cursor);
    adapter.notifyDataSetChanged();

    if(!ConstantValues.STATION_LIST_LOATED)
        userAndMessageCount.execute();
    else
    {
        Footer.setMsgCount(ConstantValues.MSG_COUNT);
        Footer.setUserCount(ConstantValues.FAVORITE_STATION_LIST.size());
        list.setAdapter(adapter);
    }

} 
         <activity 
            android:configChanges="orientation|keyboardHidden"
            android:screenOrientation="unspecified"
            android:name=".LaunchingPageActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>`
4

5 に答える 5

4
android:configChanges="keyboardHidden|orientation|screenSize"

これをマニフェストのアクティビティ要素に追加します

お気に入り

<activity 
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:screenOrientation="unspecified"
            android:name=".LaunchingPageActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>`
于 2013-04-05T05:08:05.053 に答える
1

メソッド onSaveInstanceState() および onRestoreInstanceState() を使用して、アクティビティの状態を保存および復元しようとする場合があります。

詳細については、こちらを参照してください。

ここで質問を参照してください。

編集 例: webview を使用している場合は、次のようにすることができます。

@Override
protected void onSaveInstanceState(Bundle outState )
{
    super.onSaveInstanceState(outState);
    web.saveState(outState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
   super.onSaveInstanceState(savedInstanceState);
   web.restoreState(savedInstanceState);
} 

読むことをお勧めします:Android - 回転時に WebView のリロードを防止
する また読む:画面の回転時に WebView の自動更新を防止する方法

于 2013-04-05T05:05:52.027 に答える
0

ビューを再描画する必要があるため、それは問題ではありません。アクティビティは、新しい方向に従って描画するために再起動されます..これは、Android のドキュメントによるものです..

于 2013-04-05T05:08:46.803 に答える
0

それは正常な動作です。ランタイム変更の処理に関する Android ドキュメントから:

「一部のデバイス構成は、実行時に変更される可能性があります (画面の向き、キーボードの可用性、言語など)。このような変更が発生すると、Android は実行中のアクティビティを再起動します (onDestroy() が呼び出され、その後に onCreate() が呼び出されます)。再起動の動作は次のとおりです。新しいデバイス構成に一致する代替リソースでアプリケーションを自動的にリロードすることにより、アプリケーションが新しい構成に適応できるように設計されています。」

こちらをご覧ください

于 2013-04-05T05:05:43.090 に答える