Android学习之启动活动的最佳写法

 

•开始热身

  通过之前的学习,我们现在可以很容易的启动一个活动;

  首先通过 Intent 构造出当前的 “意图”,然后调用  startActivity()  方法将活动启动起来🔗

  如果需要传递数据,也可以借助 Intent 来完成🔗

•准备工作

  新建一个项目,命名的话,我干了,您随意;

  选择 No Activity;

  进入项目后,将项目结构手动改为 Project 模式;

  点击 app/src/main/java,在相应的包名下新建一个 Empty Activity,命名为 FirstActivity;

  并将该活动设置为主活动;

  接着新建一个 Empty Activity,命名为 SecondActivity;

•今日份话题

  假设 SecondActivity 中需要用到非常重要的数据,在启动 SecondActivity 的时候必须要传过来;

  我们可以编写如下代码;

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
String data1 = "data1";
String data2 = "data2";
intent.putExtra("data1",data1);
intent.putExtra("data2",data2)
startActivity(intent);

  这样写是完全正确的,不管是从语法上还是规范上;

  只是在真正的项目开发中经常会有对接的问题出现;

  比如 SecondActivity 并不是由你开发的,但现在你负责的部分需要启动 SecondActivity;

  而你却不清楚启动这个活动需要传递什么数据。

  这是无非有两种办法:

  • 阅读 SecondActivity 的源码
  • 询问负责编写 SecondActivity 的同事

  是不是略微有点麻烦?

  其实只需换一种写法,就可以轻松解决这个麻烦;

  修改 SecondActivity.java 中的代码;

public class SecondActivity extends AppCompatActivity {

    public static void actionStart(Context context, String data1,String data2){
        Intent intent = new Intent(context,SecondActivity.class);
        intent.putExtra("data1",data1);
        intent.putExtra("data2",data2);
        context.startActivity(intent);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }
}

  我们在 SecondActivity 中添加了一个  actionStart() 方法;

  在这个方法中完成了 Intent 的构建;

  另外,所有 SecondActivity 中需要的数据都是通过  actionStart() 方法的参数传递过来的;

  然后把它们存储到 Intent 中,最后调用  startActivity() 启动 SecondActivity;

  这样写的好处就是:

  • 一目了然
    • SecondActivity所需要的数据在方法中全部体现出来了
  • 简化了启动活动的代码
    • 在 FirstActivity.java 中,只需要一行代码就可以启动 SecondActivity
    • SecondActivity.actionStart(FirstActivity.this,"data1","data2");

 

posted @ 2021-02-19 22:14  MElephant  阅读(98)  评论(0编辑  收藏  举报