android中从A activity 打开B activity 操作之后返回A activity,并且A activity状态改变就要用到刷新
我就介绍一下我开发中最常用的方法
引用函数 setResult和 onActivityResult处理机制
实现原理,在第二个Activity的返回事件中返回数据,第一个Activity中重构onActivityResult方法,在重构该方法的事件中,感觉返回的数据,做出不同的处理。以达到自动更新第一个Activity的效应。详细情况参考如下的介绍。当前两个activity,MainAcivity和SecondActivity;
//A MainAcivity的重要代码:
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
Log.v("android.abc", "!!!!!"+MainActivity.this.toString());
bundle.putString("uid", MainActivity.this.toString());
intent.putExtras(bundle);
startActivityForResult(intent,GET_CODE);
} //B.SecondActivity中,在OnClickListener中
findViewById(R.id.button).setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setResult(RESULT_OK,(new Intent()).setAction(uid));
finish();
}
}); //B.在MainActivity中,重写onActivityResult方法;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(requestCode == GET_CODE)
{
if(resultCode == RESULT_CANCELED)
{
text2.setText("点击了返回");
}
else
{
if (data != null)
{
text2.setText("得到第二个activity返回的结果:\n"+data.getAction());
}
}
}
}
其中static final private int GET_CODE = 0;是我自定义的常量,用来区分当前返回的是哪个activity的结果;下面是类SecondActivity的代码:
public class SecondActivity extends Activity{
String uid;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Bundle bundle = this.getIntent().getExtras();
if (bundle != null)
{
uid = bundle.getString("uid");
}
findViewById(R.id.button).setOnClickListener(
new View.OnClickListener()
{
@Override
public void onClick(View v)
{
setResult(RESULT_OK,(new Intent()).setAction(uid));
finish();
}
});
}
}