我不明白如何在我的Interactor类中注入Retrofit对象

时间:2019-01-29 14:03:09

标签: android retrofit dagger android-mvp

我试图阅读很多文章,但是我仍然无法理解匕首的想法。

我有我的指标类,我想向其注入改造实例。

import React, { Component } from 'react';
import {NavLink} from "react-router-dom";
import $ from 'jquery';



class Reja_S7_News extends Component {
  constructor(props) {
    super(props)
  }


  componentDidMount(){
    $('.flexslider').flexslider({
      animation: "slide",
      controlNav: false,
    });
  }




  render() {

    return (

      <div>
        <div className='row_outer'>
          <h1> Aktualności</h1>

          <div className='col-12'>

            <div className='row news_wrapper align-items-center justify-content-center'/>

            {/* Slider */}

            <div className="flexslider left">
              <ul className="slides">
                <li>
                  <img src="https://source.unsplash.com/BaCmEa2hy8g/1600x900"/>
                  <div className="meta">
                    <h1>Lorem ipsum dolor sit amet, consectetur.</h1>
                    <h2>Lorem ipsum dolor sit.</h2>
                    <div className="category">
                      <p>$286600</p>
                      <span>Category</span>
                    </div>
                  </div>
                </li>
                <li>
                  <img src="https://source.unsplash.com/RmZIUIF2S2Q/1600x900"/>
                  <div className="meta">
                    <h1>Lorem ipsum dolor sit amet, consectetur.</h1>
                    <h2>Lorem ipsum dolor sit.</h2>
                    <div className="category">
                      <p>$415000</p>
                      <span>Category</span>
                    </div>
                  </div>
                </li>
                <li>
                  <img src="https://source.unsplash.com/cFplR9ZGnAk/1600x900"/>
                  <div className="meta">
                    <h1>Lorem ipsum dolor sit amet, consectetur.</h1>
                    <h2>Lorem ipsum dolor sit.</h2>
                    <div className="category">
                      <p>$415000</p>
                      <span>Category</span>
                    </div>
                  </div>
                </li>
                <li>
                  <img src="https://source.unsplash.com/Ui8KQ0ahXBM/1600x900"/>
                  <div className="meta">
                    <h1>Lorem ipsum dolor sit amet, consectetur.</h1>
                    <h2>Lorem ipsum dolor sit.</h2>
                    <div className="category">
                      <p>$415000</p>
                      <span>Category</span>
                    </div>
                  </div>
                </li>
              </ul>
            </div>



          </div>
        </div>
      </div>
    )
  }
}

export default Reja_S7_News;

没问题,我能够将其注入MainActivity,但这不是我想要的。

有什么主意吗?我不知道代码的哪些部分会有所帮助,所以请告诉我我会提供它们。

2 个答案:

答案 0 :(得分:0)

您的交互器类可以注射吗?

您能否尝试在我们的impl类中添加一个空构造函数以使其可注入:

@Inject
public GetForecastInteractorImpl () { }

答案 1 :(得分:0)

注射时,请遵循以下步骤 让我们以提供改造为例(以Kotlin为参考)  1.创建NetModule(用@Module注释)

要创建改造,您可能需要提供OkHttpClient

@Provides
@Singleton(because we need only one instance through out the application)
fun provideOkHttpClient(): OkHttpClient {
return OkHttpClient().Builder().build() (you can also pass other things while building like Interceptor, timeOut check docs for that)
}

现在使用相同的格式提供翻新,但是要创建翻新,您需要传递OkHttpClient作为我们上面提供的参数。

@Provides
    @Singleton
    fun provideRetrofit(okHttpClient: OkHttpClient): Retrofit {
    return Retrofit.Builder().client(okHttpClient).build()
    }

现在您必须通过提供上述NetModule()来创建带有@Component注释的应用程序组件

编译Dagger之后,将生成该组件类,您可以使用该组件类来注入您的类

在上述情况下,假设我们创建了AppComponent的MainApplication类, 有一个称为MainActivity的活动,它需要Retrofit实例,然后MainActivityComponent将添加依赖项,说我也需要AppComponent, 那么您可以继续进行改造。

让我知道我能够解决您的评论:)