小编Muc*_*low的帖子

Dagger 2注入相同对象类型的多个实例

背景

我正在将我的应用程序转换为MVP架构,并发现Dagger 2在需要时注入依赖项非常有用.我的应用程序需要与两个web apis(我自己和第三方api)进行通信.有时可能会向我自己的api和第三方api发出请求.我正在使用Retrofit与这些api进行通信并使用GSON进行序列化/反序列化.

我以前做过什么

我创建了两个Retrofit RestAdapter并使用Service Locator模式在需要时获取它们.旨在用于我自己的api的RestAdapter包括带有一些自定义TypeAdapter的GSONConverter,因为我不想在应用程序中对我的响应进行1:1 JSON反序列化.另一个RestAdapter用于第三方api,并使用另一个具有特定字段命名策略的GSONConverter.

问题

我正在尝试使用DI而不是Service Locator来获取我的RestAdapter(以及API接口).我的NetModule类设置如下

@Module
public class NetModule {

    private static final String MY_API_URL = "my_api_url";
    private static final String THIRD_PARTY_API_URL = "third_party_api_url";

    @Provides
    @Singleton
    Cache provideOkHttpCache(Application application) {
        int cacheSize = 10 * 1024 * 1024; // 10 MiB
        return new Cache(application.getCacheDir(), cacheSize);
    }

    @Provides
    @Singleton
    OkHttpClient provideOkHttpClient(Cache cache) {
        OkHttpClient client = new OkHttpClient();
        client.setCache(cache);
        return client;
    }

    @Provides
    @Singleton
    TypeAdapter<MyClass> provideMyAPITypeAdapter() {
        return new TypeAdapter<MyClass>() {
            // implementation ignored …
Run Code Online (Sandbox Code Playgroud)

android retrofit dagger-2

17
推荐指数
1
解决办法
8474
查看次数

路线 API 总距离和持续时间以及航点

我正在从我的 Android 应用程序中的 Directions API 获取包括航路点在内的路线。它包含多个“腿”段,这些段有自己的距离和持续时间。有没有办法将所有距离和持续时间相加得到总值?

示例:从 Direction API 中剥离 json 段

legs": [
{
  "distance": {
    "text": "389 km",
    "value": 389438
  },
  "duration": {
   "text": "6 hours 31 mins",
   "value": 23452
  }
},
{
  "distance": {
   "text": "0.5 km",
   "value": 487
  },
  "duration": {
   "text": "2 mins",
   "value": 102
  }
}
]
Run Code Online (Sandbox Code Playgroud)

根据上面的响应,有没有一种方法可以计算并显示输出,如下所示:

总距离:389.5公里总时长:6小时33分钟

android google-maps driving-directions google-maps-android-api-2

5
推荐指数
2
解决办法
9372
查看次数

如何在wpf MVVM中正确处理窗口的关闭事件

我知道这个问题已经被问过很多次了,但我会尽量具体。

我是 WPF / MVVM 的初学者,并在我的项目中使用 Galasoft 的 MVVM Light Toolkit。

我有一个包含用户输入一些患者详细信息的表单的视图。当他们单击关闭(X)按钮时,我想检查他们是否输入了某些内容,如果输入了,则询问他们是否要在关闭之前使用(是、否和取消)选项进行保存。我做了一些研究,发现很多人都建议使用 EventToCommand 功能,如下所示,

XAML

<Window
   xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
   xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF45"
   DataContext="{Binding Main, Source={StaticResource Locator}}">
   <i:Interaction.Triggers>
      <i:EventTrigger EventName="Closing">
         <cmd:EventToCommand Command="{Binding OnClosingCommand}" 
            PassEventArgsToCommand="True"/>
      </i:EventTrigger>
   </i:Interaction.Triggers>
...
</Window>
Run Code Online (Sandbox Code Playgroud)

查看模型

public class MainViewModel : ViewModelBase
{
   public RelayCommand<CancelEventArgs> OnClosingCommand { get; set; }

   public MainViewModel()
   {
      this.OnClosingCommand = 
         new RelayCommand<CancelEventArgs>(this.OnClosingCommandExecuted);
   }

   private void OnClosingCommandExecuted(CancelEventArgs cancelEventArgs)
   {
      // logic to check if view model has updated since it is loaded
      if (mustCancelClosing)
      {
         cancelEventArgs.Cancel = true;
      } …
Run Code Online (Sandbox Code Playgroud)

c# wpf mvvm mvvm-light

4
推荐指数
1
解决办法
3129
查看次数

使用正则表达式进行复杂密码验证

我正在尝试为密码验证创建一个javascript正则表达式.接受密码的规则是

  • 应包含12个字符或更多
  • 应该包含这些特殊字符之一 * ^ !
  • 至少两个大写字符
  • 至少两个数字
  • 至少一个小写字符

我在网上找到了一个例子并将其修改如下

(?=.*[0-9]{2,})(?=.*[a-z])(?=.*[A-Z]{2,}).{12,}
Run Code Online (Sandbox Code Playgroud)

但是,这仍然会忽略特殊字符要求,并且只有在大写字符和数字按后续顺序排列时才有效.这些是我用这个得到的结果

aMMericano11 - true
aMmeRican1o1 - false
Run Code Online (Sandbox Code Playgroud)

我希望第二个也被接受,当然还增加了特殊字符.

谁可以帮我这个事?

javascript regex

0
推荐指数
2
解决办法
2637
查看次数