Activity 之间的回调得不到结果
Posted wlytctw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity 之间的回调得不到结果相关的知识,希望对你有一定的参考价值。
在开发当中我们有时候需要ActivityA 的值或者变量传输到 ActivityB在B 界面得到A–>B 的内容值,并返回处理结果!这时候我们就可以使用startActivityForResult 进行开启一个新的界面,使用 setResult 进行数据的回传!
startActivity 与 startActivityForResult 启动方式的区别在这里就不作介绍了!
需要注意的是:
1、如果 ActivityB 在清单文件中声明了android:launchMode=”singleInstance”,这样 ActivityA、ActivityB 就不会再同一个栈中,导致setResult(RESULT_OK);失败。
2、this.startActivityForResult(intent, 200);
sourceCode:requestCode If >= 0, this code will be returned in onActivityResult() when the activity exits.
译文:如果> = 0 requestCode,此代码将返回onactivityresult()活动时退出。
3、setResult(resultCode, data); // 设置返回数据,中的 resultCode是否大于0;
代码:
public class MainActivityA extends AppCompatActivity
private TextView tv_info;
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
private void initView()
tv_info = (TextView) findViewById(R.id.tv_info);
public void openActivity(View view)
Intent intent = new Intent(this, ActivityB.class);
Bundle bundle = new Bundle();
bundle.putInt("age", 24);
intent.putExtras(bundle);
startActivityForResult(intent, RequestCode.ACTIVITY_REQUETCODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
Log.i("wangly","请求码:"+requestCode);
Log.i("wangly","返回的结果码:"+ resultCode);
if (requestCode == RequestCode.ACTIVITY_REQUETCODE )
switch (resultCode)
case RequestCode.ACTIVITY_RESULTCODE:
String result = data.getStringExtra("result");
sysOutString(result);
break;
super.onActivityResult(requestCode, resultCode, data);
/**
* 输出打印结果
* @param object
*/
private void sysOutString(Object object)
tv_info.setText(object.toString());
Toast.makeText(getApplicationContext(),object.toString(), Toast.LENGTH_LONG).show();
2>ActivityB
public class ActivityB extends AppCompatActivity
@Override
protected void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);
TextView textView = (TextView) this.findViewById(R.id.textView);
Bundle bundle = getIntent().getExtras();
int age = bundle.getInt("age");
textView.setText("Activity A 传输的年龄:" + age);
public void closeActivity(View view)
Intent intent = new Intent();
intent.putExtra("result", "经过查证你的年龄怎么有问题啊!!!!");
setResult(RequestCode.ACTIVITY_RESULTCODE, intent);
finish();
管理请求码、结果码
public class RequestCode
//Activity 请求码
public final static int ACTIVITY_REQUETCODE = 100;
//Activity 返回结果码
public final static int ACTIVITY_RESULTCODE = 20;
控制台结果:
以上是关于Activity 之间的回调得不到结果的主要内容,如果未能解决你的问题,请参考以下文章
socket回调中无法finish Activity的情况?