問題タブ [android-activity]

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.

0 投票する
3 に答える
1797 参照

android - Android: ウェイクロック & ハンドリングの向きの変更

アプリが表示されているときに電話がスリープ状態にならないように、アプリケーションで Wakelock を使用しています。

問題は、向きの変更があり、システムが横向きモードでアプリを破棄して再作成するときに発生します。ウェイクロック タイマーがバックグラウンドで期限切れになった場合、システムはウェイクロックのリリースを画面をオフにする機会と見なします。

編集: Wakelock onResume を設定し、onPause を解放していることに言及する必要があります。私が理解しているように、アプリがウェイクロックをリークするのを防ぐために解放する必要があります。

向きの変更を続行するには、ウェイクロックが必要です。

以下に、これに対する解決策を概説しました。これはそれを処理するための好ましい方法ですか?代替手段はありますか?


(アクティビティではなく) ウェイクロックを保持するサービスを作成し、アクティビティがバインドを解除すると、サービスはカウントダウン タイマー (たとえば 10 秒間) を開始します。単純な向きの変更の場合、アクティビティはその 10 秒以内に再バインドされるため、ウェイクロックが維持されます。そうでない場合は、ウェイクロックが解放されます。

ありがとう。

0 投票する
1 に答える
159 参照

android - リスト アクティビティの問題

ページネーションを実装し、ページごとに 5 つのレコードを表示します。ここで、3 ページ目にいて 3 番目の要素をクリックすると、page-1 の 3 番目の要素が選択されたとします。

データの設定中に常に新しいリストオブジェクトを作成するため、問題を把握できません。

以下のコードを使用しました

以下は SomeListAdapter クラスのシグネチャです。

助けてください....

0 投票する
2 に答える
1158 参照

android - WebView エラーから ImageView のカバーアップ、画面の向きまで

すべては、Android アプリ内のシンプルなWebViewから始まりました。

このビューは、公開 URL から情報を読み込みます。そこには何も珍しいことはありません。

ただし...ネットワークの中断が発生した場合、エラーがWebViewに目​​立つように表示されてしまう可能性があります。

あれ、もったいないですよね?そこで、これを抑制する方法やトラップする方法をドキュメントや他の場所で検索しましたが、手がかりが見つかりませんでした。#android-devそこで、IRCに問い合わせてみました: WebView.onReceivedErrorについては知っていますが、視覚的な部分を抑制できますか? (代わりに、ネットワークの問題に関するダイアログ警告を表示し、再試行するオプションを付けたかったのです。)

回答:できません。:(

結構。プラン B の時間です。おそらく、ImageViewで十分ではないでしょうか?

何らかのWebViewエラーが発生した場合は、ImageViewをその場しのぎのカーテンとして使用できます。最初 (URL が読み込まれる前) にWebViewをオーバーレイし、その後フェードしてその背後にあるWebViewを表示します。WebViewが機能する場合は、すばらしいことです。しかし、onReceivedErrorが発生した場合は、カーテンをすぐに元に戻し、前述のダイアログを表示します。WebView がonPageFinishedを取得すると、カーテンが再びフェードします。

...そしてこれは...素晴らしく機能します!

画面の向きの変更をサポートするように頼まれるまで。(予言: 「物事はここから下り坂になった。」)

これまで、アプリはandroid:screenOrientation="portrait"マニフェストのメイン アクティビティで使用されていました。そのため、その部分を削除しました。もちろん、悪名高い「アクティビティが再起動されています」という問題に遭遇しまし

もちろん、それ自体は問題ではありません。これは、設計どおりに動作する Android OS です。

また、方向に応じてImageViewが適切に表示されるようにします。ありがたいことに、活用できる代替リソースがあります。その間、リロードしたくないこのWebViewがまだあります。私たちはそれを放っておいて、その時点で縦向きであろうと横向きであろうと、ビューが独自のことをするようにしたいと考えています.

画面の向きを処理するための十分に説明された方法をいくつか見つけました。さらに、著者のMark Murphy の 電子ブックを既に読んでいます(読むことを強くお勧めします)。それでも私は立ち往生していました!ImageViewが混在するようになったので、どのテクニックも請求書を満たしていないようです。

  1. もちろん、ポートレート モードを強制することは問題外です (またはそうでしょうか?)。

  2. android:configChanges="keyboardHidden|orientation" またonConfigurationChanged、画面のサイズ変更を独自に適切に処理する WebView を処理しているようです。もちろん、ImageViewもメモを取得せず、元の (ポートレート/ランドスケープ) リソースを使用し続けます!

    構成変更ハンドラー内での不適切な呼び出し activity.setRequestedOrientation(newConfig.orientation) は問題を解決しませんでした。

  3. アプリの実行間でWebViewを永続化する必要がないため、別の可能性のように 見えonRetainNonConfigurationInstance ました。残念ながら、それもうまくいかなかったようです。最後の非構成インスタンスでリセットwebviewすると(実際に渡したのはそれだけなので)、空白のWebViewが発生しました。私が求めていたものとはまったく異なります。

    一方、ImageViewは向きの変化にうまく反応しているように見えました。図に行きます。

  4. どうonSaveInstanceStateですか?同じ落とし穴。WebViewにはsaveState メソッドがありますが、遷移をシームレスに保つのに十分な深さで保存していないようです。もしそうなら、おそらくそれも想定されていないので、これも間違った方法かもしれません。

を使用する知恵についてconfigChangesは、ドキュメントではこの手法を推奨しています。実際には次のとおりです。

アクティビティの標準的な動作は、デバイスの向きが変更されたときに破棄され、再作成されることです。これにより、WebViewが現在のページをリロードします。それが望ましくない場合は、アクティビティorientationを設定して変更を処理し、 WebViewkeyboardHidden をそのままにしておく ことができます。必要に応じて自動的に向きを変えます。

もちろん、ここで何らかのパイロットエラーを犯している可能性もありますが、それが何であるかはまだわかりません.

私はドキュメントを読んで再読し、自分でこれをハックするあらゆる方法を試しました。おそらく、私はドキュメントに何か(明白な?)が欠けているか、解決策が明白ではない(しかし誰かが光を当てることができる)...またはこれは単に不可能です。後者ではないことを願っています。

手がかりは歓迎/感謝します!

0 投票する
2 に答える
10988 参照

android - 複数のアクティビティ間でAndroidサービスへの接続を維持するにはどうすればよいですか?

私は複数の活動と1つのサービスを持っています。(+ +MainActivityを実装するクラスを使用して)サービスに正常に接続しましたが、他のアクティビティで同じメソッドを適用しようとすると、LogCatにエラーが表示されます。 ServiceConnectionbindService()startService()

他の方法でサービスに接続することは可能ですか?オブジェクトを静的にして、2番目のCounterServiceConnectionオブジェクトでMainActivity使用するようなものですか?

0 投票する
3 に答える
6168 参照

android - 設定アクティビティからアクティビティを起動すると、アクセス許可拒否の例外が発生する

ここで少し問題があります。私がやりたいことは、PreferenceActivity 内からアクティビティを起動することです。したがって、設定レイアウトを保持する私のpreference.xmlは次のようになります。

マニフェストは、起動したいアクティビティを認識しています..

起動しようとすると、セキュリティ例外 ( Permission Denial ) が発生します。何か不足していますか?インテントの理解はまだ少し不完全ですが、そのように機能するはずだと考えました。

助けてくれてありがとう!

0 投票する
4 に答える
23858 参照

android - Androidで新しい画面を開く方法は?

私はAndroidが初めてで、ログインを確認した後にログインページを作成しました

ユーザー認証に基づいて結果を真または偽にします。私の目標は、認証が成功したときに、いくつかの新しいテキストボックスとボタンを使用して別の画面を表示することです。これを達成する方法は新しいレイアウトです。

どんな助けでも感謝します。

0 投票する
2 に答える
21518 参照

android - Android アクティビティの読み込みが完了したことをどのように知ることができますか?

Android アプリの自動テスト スイートに取り組んでおり、アクティビティが完全に読み込まれるのを待っているときに問題が発生しました。getActivity を呼び出すことはできますが、テストで確認したいアクティビティが表示されたからといって、そのアクティビティのコンポーネントを使用する準備ができている (完全に読み込まれている) とは限りません。Activity API を調べても何も見つかりませんでした。また、他の方法は侵襲的すぎるようで、テストの初期状態を台無しにしてしまいました。現在のアクティビティがロードされているかどうかをアプリまたは VM に尋ねる方法があるかどうかは誰にもわかりませんか?

0 投票する
53 に答える
1132459 参照

android - Androidアプリケーションのアクティビティ間でデータを渡すにはどうすればよいですか?

ログインページからログインした後、buttonそれぞれにサインアウトするシナリオがありますactivity

をクリックすると、サインインしたユーザーのをサインアウトにsign-out渡します。誰かが私にすべての人が利用できるsession idようにする方法を教えてもらえますか?session idactivities

この場合の代替案

0 投票する
1 に答える
153 参照

android - AndroidManifest.xml 内からアクティビティをパラメータ化する方法

CustomListActivity同じデータの 2 つのファセットを公開したいがあります。

例: 車のリストがあり、色のセットとモデルのセットをリストしたいと考えています。これらは my からの mimetype でフィルタリングされますContentProvider:

org.acme.cars.cursor.dir/colors org.acme.cars.cursor.dir/models

CustomListActivityはかなり複雑ですが、再利用するのに十分一般的ですが、次のとおりです。

  • ユーザーは、メニュー/ボタン バーから 2 つのリストを切り替えることができる必要があります。
  • リストは MAIN LAUNCHER の意図です。
  • ユーザーが選択したファセット (モデルまたは色) を記憶する必要があります。
  • これらのアクティビティは mimetype で呼び出せるはずです。

だから、私の質問は:

AndroidManifest.xml で 2 つのアクティビティを宣言し、それぞれ同じクラスでパラメータ化することはできますか?それとも、クラス内から何らかのスイッチを使用する必要がありますか?

0 投票する
3 に答える
298 参照

android - アプリが実行されている場合にアクティビティを強制する方法は?

ウィジェットからアクティビティを開始すると、特別なビューが開始されます。
ただし、アプリが既に実行されている場合 ([戻る] ボタンで終了していない場合)、Android は代わりに最後に表示されたアクティビティをアクティブにします。
この動作を回避するフラグやその他の方法はありますか?
私のアプリでは、前のアクティビティを閉じても問題はありません。失われるユーザー入力はありません。
onStop()のfinish()で回避策を試みたのですが、サブアクティビティ(startActivityForResult)の呼び出し時にonStopも呼び出されるため、そこから戻ると何も返らず、アプリが閉じてしまいます。