这两种开展活动的方式有什么区别?

时间:2011-01-21 19:35:19

标签: android

首先,我对这一切都是全新的,我主要是在互联网上搜索如何做我想做的事情,然后找出如何使用它。

所以我发现了如何启动活动的这两个版本,但我并不是真正理解其中的差异。这个比那个好吗?或者他们应该在不同的情况下使用?或者他们只是两种不同的方式来做同样的事情?

Button home = (Button) findViewById(R.id.to_home);
    home.setOnClickListener (new View.OnClickListener() {
        public void onClick(View view) {
            Intent i = new Intent(view.getContext(), Home.class);
                startActivityForResult (i, 0);

        }
    });

或者这个

Button button = (Button)findViewById(R.id.b_cup);
    button.setOnClickListener (new View.OnClickListener() {
        public void onClick (View view) {
            Intent i = new Intent (Home.this, Cup.class);
            startActivity (i);

        }
    });

2 个答案:

答案 0 :(得分:7)

  

有时您希望在活动结束时从结果中获取结果。例如,您可以启动一项活动,让用户在联系人列表中选择一个人;当它结束时,它返回被选中的人。要执行此操作,请使用标识该调用的第二个整数参数调用startActivityForResult(Intent,int)版本。结果将通过onActivityResult(int,int,Intent)方法返回。

除非您希望新活动返回某些内容,或者您​​需要知道它何时完成,否则startActivity()就可以了。

请参阅: http://developer.android.com/reference/android/app/Activity.html

答案 1 :(得分:0)

使用startIntentForResult(Intent,RequestCode)非常有用。当被调用的Intent关闭时,这称为

@覆盖 protected void onActivityResult (int request_code,int result_code,Intent i) {

super.onActivityResult( request_code, result_code, i );

}

然后可以使用结果代码查看意图是否已成功取消或完成。此外,如果您从主活动中调用多个Intent,指定唯一的请求代码,则可以让您处理意图目的所特有的意图结果,例如

startIntentForResult(Intent1,1)

...

startIntentForResult(Intent2,2)

...

startIntentForResult(Intent3,3)

...

然后在onActivityReslut:

@覆盖 protected void onActivityResult (int request_code,int result_code,Intent i) {

if (result_code == RESULT_OK){

    switch (request_code)
    {
    case 1:
        //Do Something
        break;
    case 2:
        //Do Something
        break;
    case 3:
        //Do Something
        break;
    default:
        //Unrecognised request_code
    }
}

super.onActivityResult( request_code, result_code, i );

}

startIntenetForResult非常有用。