2011-01-21 89 views
1

首先,我完全了解所有这些,主要是学习如何在互联网上寻找有关如何做我想做的事情的指示,然后弄清楚如何使用它。这两种启动活动的方式有什么区别?

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

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

     } 
    }); 
+0

简短的回答。号码 – 2011-01-21 19:43:47

回答

7

有时你希望得到一个结果,从一个活动回来何时结束。例如,您可以开始一项活动,让用户在联系人列表中选择一个人;当它结束时,它返回被选中的人。为此,可以使用第二个整数参数来调用startActivityForResult(Intent,int)版本来标识调用。结果将通过onActivityResult(int,int,Intent)方法返回。

除非您希望新的活动返回某些内容,或者您​​需要知道何时完成,否则startActivity()将会很好。

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

+0

太好了,谢谢!所以我会用第二个,这很好,因为它对我来说是最有意义的。 – KarenElissa 2011-01-21 19:43:12

0

使用startIntentForResult(意向,RequestCode)是非常有用的,但。当已经称为意图然后关闭这称为

@Override 保护无效onActivityResult (INT request_code,INT RESULT_CODE,意图ⅰ) {

super.onActivityResult(request_code, result_code, i); 

}

结果代码然后可以用来查看意图是否被取消或成功完成。此外,如果你调用从主活动指定一个唯一的请求代码的几个意图将让你处理独有的意图目的,如

startIntentForResult(Intent1,1)

意图结果...

startIntentForResult (Intent2,2)

...

startIntentForResult(Intent3,3)

...

然后在onActivityReslut:

@Override 保护无效onActivityResult (INT request_code,INT RESULT_CODE,意图ⅰ) {

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是非常非常有用的。

相关问题