startActivityForResult
来源:互联网 发布:滇红 知乎 编辑:程序博客网 时间:2024/06/16 18:23
1 从one Activity跳到 two Activity:
startActivity(new intent(this,two.class));
但是我们想在two里加个按钮,当点击时就返回到原来的one中,
这时我们当然可以在点击事件中写:
startActivity(new intent(this,one.class));
但是我们还有另一种方法:
从one Activity跳到 two Activity:
startActivityResult(new intent(this,two.class),1);
1 是用来标记是否是这个startActivityResult的返回值的,一般情况下如果只有一个startActivityResult,没有什么作用,但是如果我们one中有两个startActivityResult,我们可以用1,2......来区分是那个startActivityResult的返回值,确定这个返回结果是谁返回的。
我们跳到two中了,在two里的按钮的点击事件中返回到one:
this.setResult(RESULT_OK);
this.finish();
这样把RESULT_OK这个值返回给了one,在one的
protected void onActivityResult(int requestCode, int resultCode, Intent data) {}
中处理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK&&requestCode==1) {
//要做的事。
}
}
2 我们想把数据从one带到two,再从two带到one:
1 ---->2; 1中:
Intent intent = new Intent(this, Activity2.class);
Bundle bundle = new Bundle();
bundle.putString("first", "one");
intent .putExtras(bundle);
startActivityForResult(intent ,1);
2中取得1传过来的数据:
Intent intent = this.getIntent();
Bundle bundle = intent .getExtras();
String string = bundle .getString("first");
2的按钮的点击事件中返回1,并带着数据:
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putString("second", "two");
intent.putExtras(bundle);
this.setResult(RESULT_OK, intent);
this.finish();
返回1后在1中处理返回的结果和返回的数据:
- protected void onActivityResult(int requestCode, int resultCode,
- Intent data){
- switch (resultCode){
- case RESULT_OK:
- Bundle bundle = data.getExtras();
- String string = bundle.getString("second");
- updateText(string);
- }
- }
package com.example.expandablelist_test;import java.util.ArrayList;import java.util.List;import android.animation.AnimatorSet.Builder;import android.app.*;import android.content.DialogInterface;import android.content.Intent;import android.os.Bundle;import android.view.Gravity;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.AbsListView;import android.widget.BaseAdapter;import android.widget.BaseExpandableListAdapter;import android.widget.Button;import android.widget.EditText;import android.widget.ExpandableListView;import android.widget.ExpandableListView.OnChildClickListener;import android.widget.TextView;import android.widget.Toast;import android.os.Build;public class MainActivity extends Activity {private Button bt;private TextView tv_show;private EditText ed_input;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);bt = (Button) findViewById(R.id.bt);tv_show = (TextView) findViewById(R.id.tv_show);ed_input =(EditText) findViewById(R.id.ed_input);bt.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Bundle bundle = new Bundle();bundle.putString("value", ed_input.getText().toString());Intent i = new Intent();i.putExtra("bundle",bundle);i.setClass(MainActivity.this, SecondActivity.class);//1 是用来标记是否是这个startActivityResult的返回值的,一般情况下如果只有一个startActivityResult,没有什么作用,//但是如果我们one中有两个startActivityResult,我们可以用1,2......来区分是那个startActivityResult的返回值,//确定这个返回结果是谁返回的。startActivityForResult(i, 1);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if(requestCode==1 && resultCode==RESULT_OK){Toast.makeText(MainActivity.this, "返回成功", Toast.LENGTH_SHORT).show();;}super.onActivityResult(requestCode, resultCode, data); }}
package com.example.expandablelist_test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class SecondActivity extends Activity {private Button bt_back;private TextView tv_show2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.secondlayout);bt_back = (Button) findViewById(R.id.bt_back);tv_show2 = (TextView) findViewById(R.id.tv_show2);bt_back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {SecondActivity.this.setResult(RESULT_OK);SecondActivity.this.finish();}});Intent i = this.getIntent();Bundle bundle = i.getBundleExtra("bundle");tv_show2.setText(bundle.getString("value"));}}
SecondActivity.java
<pre name="code" class="java">package com.example.expandablelist_test;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class SecondActivity extends Activity {private Button bt_back;private TextView tv_show2;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.secondlayout);bt_back = (Button) findViewById(R.id.bt_back);tv_show2 = (TextView) findViewById(R.id.tv_show2);bt_back.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {SecondActivity.this.setResult(RESULT_OK);SecondActivity.this.finish();}});Intent i = this.getIntent();Bundle bundle = i.getBundleExtra("bundle");tv_show2.setText(bundle.getString("value"));}}
布局文件此处省略
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult()
- startActivityForResult()
- startActivityForResult
- startActivityForResult()
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult
- startActivityForResult()
- startActivityForResult()
- 版本控制
- ByteBuf - 字节数据的容器
- iOS开发 - JSON解析
- 【媒体应用:Android平台Vitamio播放器探索之路系列】之六:Vitamio API:utils
- Android 隐藏虚拟键盘,改变回车的文本
- startActivityForResult
- excel将多列数据以连接符‘*’连接成一列
- mysql 获取当前日期及格式化
- 在Linux/Mac下面删除所有的.svn文件
- Leetcode Copy List with Random Pointer 拷贝链表
- Android 之Activity启动模式(二)之 Intent的Flag属性
- 如何让DIV始终保持在屏幕中间
- 二叉树的非递归遍历(栈)
- Python 循环及函数range的用法