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";

}

 

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