問題タブ [activity-state]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - onSaveInstanceState はビューの「有効性」を保存する必要がありますか?
アプリケーションの言語とテーマを変更できる環境設定アクティビティがあります。そこから、戻るキーを使用して前のアクティビティに戻り、アクティビティを再作成したいと考えています。
onResume
レイアウトを再初期化し、そこから呼び出すことで、なんとかそれを行うことができましたonRestoreInstanceState
。すべてのビューが適切に復元され、必要に応じてチェックボックスがオンになり、以前に残したテキストで満たされた編集テキストが表示されます。
しかし、最初は無効になっていて、ラジオボタンがチェックされている場合にのみ有効になるボタンもあります。問題は次のとおりです。ラジオボタンをチェックすると、ボタンが有効になります。次に、設定に移動し、そこでテーマを変更して、最初のアクティビティに戻ります。そこに着くと、ラジオボタンはチェックされた状態に戻りますが、ボタンは無効になっています。
そのため、有効/無効の状態がバンドルに保存されていないようです。これは直感に反するようです。また、これを行う Android ソースのコードも見つかりませんでした。何か不足していますか、それとも独自のコードを作成する必要がありますか?
編集:ところで、状態はIDを持つビューに対してのみ保存されます。そして、そのボタンには1つあります。私はそれを保証します:)
android - onDestroyの後にonActivityResultが呼び出されなくなりました
onActivityResultは私に大きな頭痛の種を与えています。私の小さなゲームにはタイトル/メニュー画面があります。「新しいゲーム」をクリックすると、アクティビティが起動し、ゲームの世界にSurfaceViewが作成されます。
プレイするとき、プレイヤーはゲームの世界の建物に入ることができます。建物に入ると、SurfaveViewからその特定の建物のアクティビティを起動します。次に例を示します。
mMinerClassは、ゲームActivityonCreateで定義されています。
mMapはSurfaceViewです。プレーヤーの状態を含むバンドルを渡します。onActivityResultで、ストアアクティビティによって返されたバンドルを取得し、プレーヤーの状態を更新します。
mSavedPlayerは、後で新しいプレーヤーの状態を設定するために使用されます。
上記のすべては一般的に機能します
私は店に入ったり、物を買ったり、去ったりすることができ、プレーヤーは正しく更新されます。
ホームボタン(またはsomeyimesの戻るボタン)を押してonDestroyが呼び出されると、問題が発生します。私のonDestroyメソッドは、super.onDestroy()を呼び出す以外に何もしません。
onDestroy()が呼び出された後、onActivityResultは呼び出されなくなります。
それで:
1)私はゲームをプレイしますが、すべてがうまく機能します。
2)私は家に押して、ondestroyは呼ばれます
3)ランチャーアイコンを使用してゲームを再起動します
4)ゲームを再開します。ストアに出入りすることはできますが、onActivityResultは呼び出されなくなります。
これがlogcatの出力です。関連するメソッドを入力するたびにログに記録しています。
私はこれを私の電話から投稿しているので、ばかげたタイプミスを許してください。
これに関して、すべての人が提供できる洞察に感謝します。ありがとう!
java - onSaveInstanceState()およびonRestoreInstanceState()を使用して、多次元配列を保存および復元するにはどうすればよいですか?
onSaveInstanceState()およびonRestoreInstanceState()を使用して、多次元配列を保存および復元するにはどうすればよいですか?
ExpandableListViewを使用しています。私には次のグループと子供がいます。
次のjava.lang.ClassCastException例外が発生しました。
01-19 17:12:55.417:E / AndroidRuntime(708):原因:java.lang.RuntimeException:アクティビティを開始できませんComponentInfo {com.abc.myapp/ com.abc.myapp.mylistActivity}:java.lang。 ClassCastException:[Ljava.lang.Object;
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.ActivityThread.startActivityNow(ActivityThread.java:2503)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)で
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-19 17:12:55.417:E / AndroidRuntime(708):... 11 more 01-19 17:12:55.417:E / AndroidRuntime(708):原因:java.lang.ClassCastException:[Ljava.lang 。物体; 01-19 17:12:55.417:E / AndroidRuntime(708):com.abc.myapp.mylistActivity.onRestoreInstanceState(JobInfo.java:303)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.Activity.performRestoreInstanceState(Activity.java:815)で
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1096)
01-19 17:12:55.417:E / AndroidRuntime(708):android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2641)
01-19 17:12:55.417:E / AndroidRuntime(708):...19詳細
多次元配列を保存および取得する方法はありますか?
android - テーマが適用された後に Android がアプリケーションの状態を保存する
ボタンのクリックで 2 つのテーマ (黒と白) を切り替えることができるアプリケーションを作成しました。そして、マニフェストでデフォルトのテーマを白に設定しました。
そのため、アプリケーションを閉じて再起動するたびに、テーマの状態は保存されず、白いテーマが適用されます。
アプリケーションの状態を保存する方法、それを行うさまざまな方法について、可能であればアイデアやコードを教えてもらえますか?
ありがとうございました。
android - Androidのバックプレスでアクティビティ状態をそのまま維持する方法は?
私は Android が初めてです。アクティビティ launchmode singleTop を作成する Android Developers Doc に従って、そのアクティビティはそのまま維持されます。しかし、それは私にとってはうまくいきません。カウントダウンタイマーがあるアクティビティがあります。私が望むのは、そのアクティビティをバックプレスに残して、カウントダウンタイマーがまだ実行されているはずのアクティビティに戻るときです。どうやってするの ?助けてください
android - 「アクティビティを保持しない」に似た動作を実装する
私のアプリには、アクティビティ a-> アクティビティ b-> アクティビティ a-> アクティビティ b... 無限に移動できるシナリオがあり、最終的には OOM になります。
「アクティビティを保持しない」動作のようにする方法を知っている人はいますか?たとえば、アクティビティは強制終了されてメモリを解放しますが、履歴には残っているため、ユーザーが戻ったときに再作成できますか?
android - Android、最後のアクティビティ状態を取得するにはどうすればよいですか?
私はone.xml
ファイルを持っています:
そして、私はtwo.xml
このようなファイルを持っています
インフレータを使用してボタンをクリックすると、one.xml に two.xml を追加できます。問題はない。しかし、電話の戻るボタンをクリックするか、すべてのアクティビティを終了してから再エントリすると、ビューの追加がなくなりました。最後のアクティビティ状態を取得するにはどうすればよいですか? すべてのIDで?
これはボタンをクリックする私のコードです。
android - コントロールが次のアクティビティに渡された後、戻るボタンをトラバースするために、アクティビティの状態を維持する
ListView フラグメント内のアイテムをクリックすると、コントロールは詳細アクティビティに渡され、このアイテムに関連するデータがダウンロードされ、このアクティビティのビューページャーに適切なアダプターが設定されます。このアクティビティ内で、ユーザーが画像をクリックすると、フルスクリーン アクティビティが開始されます。この特定の画像をフルスクリーンで表示します。
ここで私の問題は次のとおりです。ユーザーが閉じるアイコンをタップするか、戻るボタンをトラバースしてこのフルスクリーン アクティビティを終了した場合、再度ダウンロードする代わりに、詳細アクティビティ データ (このアイテムのために以前にダウンロードしたもの) を再利用するにはどうすればよいですか。ソリューションは、ユーザーが詳細アクティビティで新しいアイテムをクリックしたときにも機能するはずであり、このアイテムのデータのダウンロードが開始されます。
ストレージに SQLLite、FileSystem を使用したくない。ListView でアイテムがクリックされたときにデータをダウンロードしても問題ありませんが、ユーザーがフルスクリーン アクティビティからトラバースしたときは問題ありません