首先,我对这一切都是全新的,我主要是在互联网上搜索如何做我想做的事情,然后找出如何使用它。
所以我发现了如何启动活动的这两个版本,但我并不是真正理解其中的差异。这个比那个好吗?或者他们应该在不同的情况下使用?或者他们只是两种不同的方式来做同样的事情?
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 :(得分: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非常有用。