从子 Activity 获取返回结果
来源:互联网 发布:易语言赚钱源码 编辑:程序博客网 时间:2024/06/06 03:25
在 Android 开发中,经常会通过某个父 Activity 启动一个子 Activity,用户
在子 Activity 上的操作信息又需要返回给父 Activity 。对于这种需求,我们
不是在父 Activity 直接调用 startActivity() 函数来启动子 Activity,而是调用
startActivityForResult()函数。
需要从子activity获取返回信息时,可调用以下Activity方法:
public void startActivityForResult(Intent intent, int requestCode)
该方法的第一个参数同前述的 intent。第二个参数是请求代码。 请求代码是先发送给子 activity,然后再返回给父 activity 的用户定义整数值。当一个 activity 启动多个不同类型的子 activity,且需要判断区分消息回馈方时,通常会用到该请求代码。
1,在父 Activity 中声明请求码,在点击跳转到子 Activity 处,使用如下代码:
private static final int REQUEST_CODE_CHEAT = 0; /** * 点击跳转挑战至子 activity * @param view */ public void cheat(View view) { boolean answerTrue = mQuestionBank[mCurrentIndex].getAnswerTrue(); Intent intent = CheatActivity.newIntent(this, answerTrue); startActivityForResult(intent,REQUEST_CODE_CHEAT); }
2,设置返回结果值。(子 Activity)
package com.gyq.geoquiz;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;public class CheatActivity extends AppCompatActivity { private static final String EXTRA_ANSWER_IS_TRUE = "com.gyq.geoquiz.answer_is_true"; private static final String EXTRA_ANSWER_SHOWN = "com.bignerdranch.android.geoquiz.answer_shown"; private TextView mAnswerTextView; private Button mShowAnswer; private boolean mAnswerIsTure; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_cheat); mAnswerIsTure = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false); mAnswerTextView = (TextView) findViewById(R.id.answer_text_view); mShowAnswer = (Button) findViewById(R.id.show_answer_button); mShowAnswer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mAnswerIsTure) { mAnswerTextView.setText(R.string.true_button); } else { mAnswerTextView.setText(R.string.false_button); } setAnswerResult(true); } }); } public static Intent newIntent(Context context,boolean answerIsTrue) { Intent i = new Intent(context, CheatActivity.class); i.putExtra(EXTRA_ANSWER_IS_TRUE, answerIsTrue); return i; } //第二步 private void setAnswerResult(boolean isAnswerShown) { Intent data = new Intent(); data.putExtra(EXTRA_ANSWER_SHOWN,isAnswerShown); setResult(RESULT_OK,data); }}
3,解析结果 Intent(子 activity)
public static boolean wasAnswerShown(Intent result) { return result.getBooleanExtra(EXTRA_ANSWER_SHOWN,false); }
4,处理返回结果(父 activity)
private boolean mIsCheater;@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) { return; } if (requestCode == REQUEST_CODE_CHEAT) { if (data == null) { return; } mIsCheater = CheatActivity.wasAnswerShown(data); } }
阅读全文
0 0
- 从子 Activity 获取返回结果
- 从子Activity获取返回结果
- 从Activity返回结果
- 从Activity返回结果出现异常
- 启动Activity并获取返回结果
- Android Developers:从一个Activity获取结果
- Android Developers:从一个Activity获取结果
- Activity通信 之 获取Activity的返回结果
- 父Activity获取子Activity的返回值
- 关于Fragment跳转到Activity 获取返回结果的处理
- 开启Activity获取不到返回结果的常见问题
- Android开启新的activity并获取返回的结果
- Activity中获取AsyncTask中onPostExecute的结果返回值
- Activity之间返回结果
- 调用Activity返回结果
- Activity处理返回结果
- Tabhost中子Activity跳转到新的activity,从该activity重新返回子Activity问题解决
- android activity之间传递参数,获取上一个activity的返回结果
- mysql查看当前运行中或挂起的sql
- jsp文件中获取项目真实路径
- Hdu 6000 Wash(贪心)
- jquery 根据数据库值设置radio的选中
- Python3 深浅拷贝
- 从子 Activity 获取返回结果
- Atom代码编辑软件炫酷效果插件activate-power-mode安装方法
- bzoj4992 [Usaco2017 Feb]Why Did the Cow Cross the Road(分层图最短路)
- jdbc链接mysql数据库
- 火星文字(PAT-1044)
- #1008约瑟夫问题
- 【scrapy ip代理池】如何解决ip被限制的问题
- 关于合格设计师的30条冷知识
- GitHub上整理的一些工具