Intent的另一种启动方式

在阅览别人的代码时,看到别人是这么启动另外一个Activity的
NewsInfoActivity.actionStart(mContext, item.getLink());
当时就觉得很奇怪,第一次见嘛,然后我就到这个 NewsInfoActivity 类中查 actionStart 方法,发现

   public static void actionStart(Context context,String url){
        Intent intent = new Intent(context,NewsInfoActivity.class);
        intent.putExtra("link",url);
        context.startActivity(intent);
    }

我就纳闷了,为啥要这样启动Activity,意图 用的好好的,干嘛这样写,肯定是有原因的,就上网搜一下,发现这位哥们解释的挺好的,通熟易懂。地址:http://blog.csdn.net/chathello/article/details/53201536#comments

下面是解释内容:

在开发过程中,启动活动是最常见的操作,当然我们很熟悉了,无非就是:首先通过Intent构建出当期的”意图”,然后调用startActivity()或startActivityForResult()方法将活动启动起来,如果有数据需要从一个活动传递到另一个活动,也可以借助Intent来完成.
假设SecondActivity中需要用到两个非常重要的字符串参数,在启动SecondActivity的时候必须要传递进来,那么我们很容易写:

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

这样写很标准,但在真正的项目开发中经常会有对接的问题出现,比如SecondActivity并不是有你开发,但现在你负责的部分需要有启动SecondActivity这个功能,而你不清楚启动这个活动需要传递那些数据.这是就有一种写法可以轻松解决掉这个问题.
修改SecondActivity中的代码,如下:

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

我们在SecondActivity中添加了一个actionStart()方法,在这个方法中完成Intent的构建,另外所有SecondActivity中需要的数据都是通过actionStart()方法的参数传递进来的,然后把他们存储在Intent中,最后调用startActivity方法启动SecondActivity.
这样写就一目了然了,SecondActivity所需要的数据全部都在方法参数中体现出来了,这样即使不用阅读SecondActivity中的代码,也可以很清晰的知道启动SecondActivity需要传递那些数据,另外简化了启动活动的代码.现在只需要一行代码就可以启动SecondActivity了,如下:

button.setOnClickListener(new OnClickListener(){
public void onClick(View v){
SecondActivity.actionStart(FirstActivity.this,"data1","data2");
}
});

养成这样的习惯,在开发中就会事半功倍了.方便他人,成就自己!!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值