Day04 启动Activity并返回数据
来源:互联网 发布:提额软件 编辑:程序博客网 时间:2024/06/05 02:52
场景:
相关方法:
Intent intent = new Intent(上下文环境,要启动的目标Activity);
上下文环境:当前类的类名.this
要启动的目标Activity: 目标Activity的类名.class
intent.putExtra(key,value);
通过intent传递数据
Bundle bundle = new Bundle();
bundle.putXXX(key,value);
intent.putExtras(Bundle bundle);
bundle绑定数据,intent传递bundle
getIntent() 获取Intent对象
startActivityForResult(intent,requestCode);
intent :目标Activity
requestCode:请求码,标识数据来源
setResult(结果码,intent)
结果码:通常是 RESULT_OK RESULT_CANCLE
intent:返回的结果
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
返回强求页面,自动调用,data 就是 setResult(result_code,intent)中的intent
布局:
启动页面:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" android:padding="5dp" tools:context="com.yztc.day0703_wang_02.MainActivity"> <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="@string/et_input" android:id="@+id/et_input"/> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_request" android:id="@+id/btn_request"/></LinearLayout>
对应的java代码
package com.yztc.day0703_wang_02;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends AppCompatActivity { private EditText et_input; private Button btn_request; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et_input = (EditText) findViewById(R.id.et_input); btn_request = (Button) findViewById(R.id.btn_request); btn_request.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String et = et_input.getText().toString(); if (TextUtils.isEmpty(et)){ //如果输入为空,就弹出提示 Toast.makeText(MainActivity.this,"输入不能为空,请重新输入",Toast.LENGTH_SHORT).show(); }else { Intent intent = new Intent(MainActivity.this,SecondActivity.class); //给第二个页面传递数据 intent.putExtra("data",et); //跳转第二个页面,并设置请求码requsetCode startActivityForResult(intent,1); } } }); } //处理从另外一个页面返回回来的数据 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //1 就是你上面设置的 requestCode , Result_ok 就是你接收另一个页面的结果码 if (requestCode == 1 && resultCode == RESULT_OK){ Bundle bundle = data.getExtras(); String response = (String) bundle.get("response"); Toast.makeText(this,response,Toast.LENGTH_SHORT).show(); } }}
第二个页面:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#ffff00" android:gravity="center" android:orientation="vertical" android:padding="5dp" tools:context="com.yztc.day0703_wang_02.SecondActivity"> <TextView android:id="@+id/tv_show" android:layout_width="200dp" android:layout_height="200dp"/> <Button android:id="@+id/btn_result" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/btn_result"/></LinearLayout>
对应的java代码:
package com.yztc.day0703_wang_02;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.TextView;public class SecondActivity extends AppCompatActivity { private TextView tv_show; private Button btn_result; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); tv_show = (TextView) findViewById(R.id.tv_show); btn_result = (Button) findViewById(R.id.btn_result); //获取Intent,这个intent来自启动当前页面的那个活动 Intent intent = getIntent(); //获取从第一个页面传递过来的数据 String data = intent.getStringExtra("data"); //设置到当前页面的textView中 tv_show.setText(data); //点击按钮,并向第一个页面返回一句话,设置结果码,并传递数据 btn_result.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent tent = new Intent(); Bundle bundle = new Bundle(); bundle.putString("response","我是长颈鹿"); tent.putExtras(bundle); setResult(RESULT_OK,tent); //销毁当前页面,返回上一个页面 finish(); } }); }}
0 0
- Day04 启动Activity并返回数据
- 启动其他 Activity并返回数据
- 启动另外一个Activity,并获取其返回数据
- 启动Activity并返回结果
- Android启动一个新的activity并携带数据,返回数据给上一个activity
- 返回上一个Activity并返回数据
- Android 启动另外activity并返回结果
- startActivityForResult启动另一个Activity并返回结果
- 启动其他Activity并返回结果
- 启动其他的Activity并返回结果
- Android 启动其他Activity并返回结果
- 启动其它Activity并返回结果
- 【Android】启动其他Activity并返回结果
- 启动另外一个activity,并返回结果
- 启动其他Activity并返回结果
- Android--启动另一个Activity并返回结果
- 启动其他Activity并返回结果
- 启动Activity并获取返回结果
- 杂谈の破事水
- 2014.11.27
- ce+od无法同时附加进程的问题
- iOS开发——UIImageView的contentMode、裁剪和layer属性详解
- 2014.12.07 NRF24L01模块51通讯学习
- Day04 启动Activity并返回数据
- R 基础绘图note
- 2014.12.15 3D打印
- 使用Crashlytics来保存应用崩溃信息
- 解析几何 —— 圆
- Android 实现类似IOS App唤醒的代理方法
- shell使用小结
- Python知识点整理(基础篇)
- 欢迎使用CSDN-markdown编辑器