领导说我基础差,我也没反驳,知识忘记了,用到的时候查一下不久行了吗,自己最近在回顾知识 好好的在补充一下,今天礼拜日,趁着空闲事件记录一下简单的知识

startActivityForResult() 也是经常使用到比如我们做城市选择点击城市,返回点击的城市等等,

使用startActivityForResult()方法 你需要清楚

1 startActivityForResult(Intent intent, int requestCode)

Intent intent就和普通的activity跳转一样 可能是activity或者数据

int requestCode 这个是自己写的标记,可能一个界面跳转不懂的界面做区分的,不过这个虽说是自己随意取的,但是是负数的时候

好像不行,

这个自己理解为跳转界面并且添加一个标记

2 setResult(int resultCode, Intent data)

int resultCode 这个就是返回码,用来标记成功或者失败 可以自己写一个或者使用官方的RESULT_OK

 Intent data 这个就是要返回的数据

下面是源码的注释

* @param resultCode The result code to propagate back to the originating*                   activity, often RESULT_CANCELED or RESULT_OK* @param data The data to propagate back to the originating activity.

 写这个主要是返回数据

3 onActivityResult(requestCode, resultCode, data);

跳转过去了,然后别的界面也返回了,这个就是接受值的作用了, 

requestCode 就是跳转界面自己添加的标记区分

resultCode 这个是返回值界面的自己写的状态码

data 是返回值界面值 

 

介绍完了 写一个案例 练习一下

要实现的效果图,就是姓名是第二个界面返回的

 

个人信息界面

package com.hly.mydemo.utils;import android.content.Intent;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.TextView;import com.hly.mydemo.R;public class InformatonActivity extends AppCompatActivity {    public static final int REQUEST_NICK = 0x100;    private TextView name;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.information_activity_layout);        name = findViewById(R.id.name);        findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent(InformatonActivity.this, NickNameActivity.class);                startActivityForResult(intent, REQUEST_NICK);            }        });    }    @Override    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {        super.onActivityResult(requestCode, resultCode, data);        //需要先判断resultcode返回的情况,然后还需要判断requestcode属于是那个activity        if (resultCode == RESULT_OK &&requestCode == REQUEST_NICK) {                name.setText(data.getStringExtra("nick"));        }    }}

 

返回姓名界面

public class NickNameActivity extends AppCompatActivity{    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.nickname_activity_layout);        findViewById(R.id.cons).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.putExtra("nick", "小牧");                setResult(RESULT_OK, intent);                finish();            }        });    }}

 

更多相关文章

  1. Qt on Android,输入法弹出后,界面无法自适应
  2. Android(安卓)Studio 必备技巧:TODO 用法及自定义 TODO
  3. ICS 系统栏分析(一)
  4. Android调用系统自带的设置界面
  5. 【Android(安卓)界面效果22】Android的Tab与TabHost
  6. Android应用基础知识
  7. Android知识巩固—四大组件能否开多进程
  8. Android下affinities和任务(task)
  9. Intent妙用之编写自己的android主界面

随机推荐

  1. android fragment学习4-底部布局扩展TabL
  2. 细读《深入理解 Android(安卓)内核设计思
  3. Android之系统架构
  4. android如何使webview不跳到自带的浏览器
  5. 基于android ndk-r15 生成ffmpeg4.0 .so
  6. Android环境的搭建
  7. Android之异步任务AsyncTask解析XML数据
  8. 二维码扫描(横屏、竖屏、解决竖屏后拉伸问
  9. Android-抽象类抽象方法
  10. 搭建NDK环境,运行samples