日安。我想通过我自己的活动发送和接收请求代码,而不是像通常那样使用意图。例如,联系人活动或任何其他外部ones.Lets说我有一些BuyCoins活动,我像这样启动它
Intent intent = new Intent(getApplicationContext(), BuyCoins.class);
startActivityForResult(intent, BUY_COINS_REQUEST_CODE);所以,通过谷歌搜索,每个人都不是以这种方式使用意图,但我不想在这种情况下使用意图,我想默认使用它。在买硬币课上,每个人都说我应该这样做
setResult(RESULT_OK);但是我从哪里得到BUY_COINS_REQUEST_CODE?我如何从BuyCoins类返回请求代码?有人能告诉我吗?
发布于 2016-08-29 22:39:51
我找到了我自己的答案的解决方案though.Keep一个常量类,或者无论您如何为请求代码want.Make一个最终的静态公共变量,像往常一样将其传递给startActivityForResult(),并启动所需的activity.The技巧在这里now.Whenever您想要完成已启动的所需的活动,以便在finish()调用此方法之前将结果返回给该活动的启动器
setResult(Constants.MY_OWN_REQUEST_CODE, myOwnCreatedIntentData);现在可以开始了,这意味着您现在可以在您的呼叫者活动中执行下一步
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case Constants.MY_OWN_REQUEST_CODE:
if (data != null) {
boolean someData= data.getExtras().getBoolean(Constants.SOME_DATA_KEY);
}
break;
}
}这就是你要做的
发布于 2016-08-29 22:41:14
BUY_COINS_REQUEST_CODE是声明为实例变量的常量整数值
final int BUY_COINS_REQUEST_CODE =101;//or any
SecondActivity
Intent intent=new Intent();
setResult(FirstActivity.BUY_COINS_REQUEST_CODE ,intent);
finish();//finishing activity 现在在FirstActivity中
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case :BUY_COINS_REQUEST_CODE
if (resultCode == BUY_COINS_REQUEST_CODE && null != data) {
//do something
}
break;
}
}希望能有所帮助
发布于 2016-08-29 22:56:50
您的SecondActivity应按如下方式设置数据:
Intent intent=new Intent();
Intent.putExtra("coins","coins value");
setResult(RESULT_OK,intent); finish();//完成活动
在FirstActivity中覆盖onActvityResult方法,如下所示:
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { case BUY_COINS_REQUEST_CODE : if (resultCode == RESULT_OK && null != data) {
String coins= data.getStringExtra("coins");
}
break; } }希望它能帮助你解决问题。
https://stackoverflow.com/questions/39208568
复制相似问题