ARouter 路由跳轉—IProvider

注意,在你具體些的時候,可能會思考一個問題,這個抽象接口該往哪兒放?我的建議是放在公共域內,一般是往base裏放,因爲只有這樣,你其他的moudle纔可以對該服務進行訪問。

另外,更高級一點的場景是,頂層抽象出來的接口,你不同Moudle可以有不同的實現。

 

ARouter 路由跳轉—IProvider

1.ARouter環境配置(看配置文檔即可)

2.頂層抽象出來的接口,你不同Moudle可以有不同的實現

public interface INewsProvider extends IProvider { 
    //跳轉到新聞界面 
    void startNewsDetail(); 
}

3.接口實現類NewProvider

@Route(path = ServicePathTag.SERVICENEWS,name = "新聞") 
public class NewProvider implements INewsProvider { 
    @Override public void startNewsDetail() {
        ARouter.getInstance().build(ServicePathTag.NEWSDETAIL).navigation();
     }

    @Override
    public void init(Context context) {

    }

}

4.主界面:需要調用的地方 MainActivity

class MainActivity : AppCompatActivity() {

    @Autowired(name = ServicePathTag.SERVICE_NEWS)
    internal var newProvider: INewsProvider? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        tv_app.setOnClickListener {
        newProvider?.startNewsDetail()
    }

}

5.跳轉目標頁 NewsDetailActivity

@Route(path = ServicePathTag.NEWS_DETAIL) 
public class NewsDetailActivity extends Activity { 
    private TextView tv_news_two; 
    @Override protected void onCreate(@Nullable Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_news_splash); 
    } 
}

6.常量類

public class ServicePathTag {
    public final static String SERVICE_NEWS="/news/provider";
    public static final String NEWS_DETAIL = "/news/detail";

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章