検索

ホームページ  >  に質問  >  本文

android - 我能否实现一个不需主动传入上下文的dialog?

既然我可以通过注册activity生命周期回调的方法在任意地方获取到最后一个onresume的activity,
那么我是否可以创建一个工具类,工具类利用这个activity来构造dialog呢?
这样做有什么坏处呢?
我现在用一个toast工具类,在工具类中直接使用了application的context,这样做可以吗?

阿神阿神2885日前643

全員に返信(6)返信します

  • 巴扎黑

    巴扎黑2017-04-18 09:18:44

    はい、できますが、なぜですか?ダイアログ ツール クラスをカプセル化し、アクティビティを渡すだけです。トーストに関しては、applicationContext を使用することをお勧めします。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:44

    ダイアログを構築し、アクティビティ コンテキストを直接渡します。コールバックなどを使用する必要はありません。他の人のパッケージ化されたツール ライブラリを参照して、他の人のアイデアを確認することができます。

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:44

    注意してください。公式 Web サイトにあるように、テーマをダイアログに設定するだけで、アクティビティをダイアログとして使用できます

    返事
    0
  • PHP中文网

    PHP中文网2017-04-18 09:18:44

    本来、システム レベルのダイアログは applicationContext を渡すだけで非常に便利ですが、さまざまなメーカーによる過度のカスタマイズにより (Xiaomi のシステム レベルのポップアップの嫌なカスタマイズに遭遇しました。) -up ボックス、同じバージョン、更新されたら変更する) したがって、上記のすべてを実装するには、カスタマイズされたダイアログ形式のアクティビティをポップアップ ボックスとして使用するのが最善です。現在、多くの企業がこれを行っています。 Tencent の伝書鳩プッシュは、カスタマイズの手間をかけずに確実に開くことができる方法です。

    返事
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:18:44

    Android ダイアログの場合、何があってもコンテキストを渡す必要があります。 Activity を渡すことは、実際には Context を渡すことと同じです。アプリケーションのコンテキストを使用することはできません。また、静的なコンテキストは推奨されず、メモリ リークが発生する可能性があります。

    ただし、依存関係注入などの方法を使用して、このプロセスを非表示にしたり簡素化したりすることができます。

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:18:44

    それはできません (お勧めしませんが、言いたいのですが)
    既に実装されているビルドでは、何が起こるか予想してみましょう。

    1. ネットワーク リクエストが送信され、ページが終了しましたが、リクエストが返されたときにダイアログ ボックスが表示されました。このダイアログに後続の操作がある場合はどうすればよいですか?ダイアログと操作にデータがあり、これらは処理されます。コードをどこに配置すればよいですか? このデータを Dialog インスタンスに正常に配置して、新しい内部クラスを作成できます。おめでとうございます。終了したばかりのアクティビティのメモリがリークしました。

    2. どこでも再生でき、コード構造も維持できるユニバーサル ダイアログの使用を制限するにはどうすればよいですか?

    3. 小規模なプロジェクトの場合は、必要に応じて BaseActivity を直接作成し、コード構造を処理してダイアログ ボックスをポップアップ表示することができます。理由は十分ではありません。

    返事
    0
  • キャンセル返事