startactivityforresult
从A页面使用startActivityForResult()跳转到B页面,B页面点击返回时将新写入的值传回到A页面。
MainActivity:
public class MainActivity extends APPCompatActivity {
private TextView textView;
@Override
protected void onCreate(Bundle savedinstanceState) {
super.onCreate(savedInstanceState);
setcontentView(R.layout.activity_main);
findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
}
});
textView = (TextView) findViewById(R.id.textview);
}
@Override
protected void onActivityResult(int requestcode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//此处可以根据两个Code进行判断,本页面和结果页面跳过来的值
if (requestCode == 1 && resultCode == 3) {
String result = data.getStringExtra("result");
textView.setText(result);
}
}
}
SecondActivity:
public class SecondActivity extends Activity {
EditText text1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
text1 = (EditText) findViewById(R.id.text1);
Button finish = (Button) findViewById(R.id.finish);
finish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent i = new Intent();
i.putExtra("result", text1.getText().toString());
setResult(3, i);
finish();
}
});
}
/**
* 不起作用
*/
@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent();
i.putExtra("result", text1.getText().toString());
setResult(3, i);
finish();
}
/**
* 需要拦截press的事件
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent i = new Intent();
Bundle bundle = new Bundle();
bundle.putString("result", text1.getText().toString());
setResult(3, i.putExtras(bundle));
// Intent i = new Intent();
// i.putExtra("result", text1.getText().toString());
// setResult(3, i);
finish();
return true;
} else {
return super.onKeyDown(keyCode, event);
}
}
}
注意:
1. 在setResult后,要调用finish()销毁当前的Activity,否则无法返回到原来的Activity,就无法执行原来Activity的onActivityResult函数,看到当前的Activity没反应。
2.另外在运行过程中,发现按Back键后,是直接返回RESULT_CANCELED的,而且不带有数据的。如果你设想在按返回键时返回数据,那么需要截获Back键的事件处理。
项目完整地址在这里:
https://github.com/buder-cp/base_component_learn
相关阅读
定义:innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML。 /*这串代码的var a的变量是我瞎写的。我忘记js咋样定义变量
Android 请求数据时,报错 "HttpException:HTTP 503 S
(1)场景http请求数据时,报以下异常 :同时,后台也检测不到接口请求的痕迹,但是有时再试一下又行了。(2)解决思路①后台连接数量可能限制,
一、unix_timestamp函数用法 1、unix_timestamp() 得到当前时间戳 2、如果参数date满足yyyy-MM-dd HH:mm:ss形式,则可以直接unix
最近项目中有需要用在线视频播放。之前有关于视频播放介绍了一些工具使用。如ijkplayer ,ExoP
在使用C++编程的时候,有时会输入一段英文句子,如果使用Python原因的话,那么直接使用 split() 函数就好了。那么使用C++有没有方便的