Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ithaibo/ANavigator

Open more actions menu

Repository files navigation

ANavigator

这是一个优化startActivityForResult业务逻辑的轻量级框架。

for what?

平常用startActivityForResult来启动一个新页面,并且从新页面返回的时候需要根据结果处理相应逻辑。如:

// ListTodo
public class ActivityListTodo extends Activity{
  private void launchTodoEdit(int id) {
    Intent intent = new Intent(ActivityListTodo.this, ActivityEditTodo.class);
    startActivityForResult(intent, 1);
  }
  @Override
  protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 1 && resultCode == Activity.RESULT_OK) {
      // do something
    }
  }
}

诸如上面的场景很多,大多做法如此,因为Android SDK也没有提供其他更好的方式。但是,这种方式却让业务逻辑变得很零散。那么能不能像下面一样组织代码:

ANavigator.getInstance()
  .from(ActivityListTodo.this)
  .to(new Intent(ActivityListTodo.this, ActivityListTodo.class))
  .onResult(new ResultConsumer() {
     @Override
     public void onResult(int resultCode, @Nullable Intent dataResult) {
       if (resultCode == RESULT_OK) {
         // do something
       }
     }
  })
  .apply();

好了,使用方式我也讲完了,就这么多。

API

  1. 从哪儿来
public ANavigator from(@NonNull Context cxt);
  1. 到哪儿去
public ANavigator to(@NonNull Intent intent);
  1. 如何接收结果
public ANavigator onResult(@Nullable ResultConsumer resultConsumer);
  1. 万事具备,出发
public final void apply();

注意事项

为了更小的包体积,api是Java模块,但是只能在Android模块中使用。

About

navigator, startActivityForResult

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.