Android(安卓)startActivityForResult()的用法
16lz
2021-01-24
领导说我基础差,我也没反驳,知识忘记了,用到的时候查一下不久行了吗,自己最近在回顾知识 好好的在补充一下,今天礼拜日,趁着空闲事件记录一下简单的知识
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(); } }); }}
更多相关文章
- Qt on Android,输入法弹出后,界面无法自适应
- Android(安卓)Studio 必备技巧:TODO 用法及自定义 TODO
- ICS 系统栏分析(一)
- Android调用系统自带的设置界面
- 【Android(安卓)界面效果22】Android的Tab与TabHost
- Android应用基础知识
- Android知识巩固—四大组件能否开多进程
- Android下affinities和任务(task)
- Intent妙用之编写自己的android主界面