Android-startActivityForResult用法
来源:互联网 发布:网吧告计费软件 编辑:程序博客网 时间:2024/05/17 23:06
从子Activity获取返回结果
public void startActivityForResult(Intent intent, int requestCode)
该方法的第一个参数是intent,第二个参数是请求代码。请求代码先发送给子activity,然后再返回给父activity的用户定义整数值。当一个activity启动多个不同类型的子activity,且需要判断区分消息回馈方时,通常会用到该请求代码设置返回结果
public final void setResult(int resultCode)
public final void setResult(int resultCode,Intent data)
一般来说,参数resultCode可以是以下两个预定义常量中的任何一个
Activity.RESULT_OK
Activity.RESULT_CANCELED一个例子的效果图
Demo目录
字符串资源
<string name="one">1+1=?</string> <string name="two">2+2=?</string> <string name="one_answer">2</string> <string name="two_answer">4</string>
- activity_main.xml
<?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"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/one"/> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/two"/></LinearLayout>
- MainActivity.java
public class MainActivity extends AppCompatActivity { private static final int REQUEST_ONE = 1; private static final int REQUEST_TWO = 2; private Button btn1; private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivityForResult(ChooseActivity.newIntent(MainActivity.this), REQUEST_ONE); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startActivityForResult(ChooseActivity.newIntent(MainActivity.this), REQUEST_TWO); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { showResult(requestCode,ChooseActivity.getResultAnswer(data)); } } private void showResult(int requestCode, int answer) { String str; if (requestCode == answer) { str = "正确"; } else { str = "错误"; } Snackbar.make(this.getWindow().getDecorView(), str, Snackbar.LENGTH_LONG).setAction("Action", null).show(); }}
- activity_choose.xml
<?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:id="@+id/activity_choose" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/one_answer"/> <Button android:id="@+id/btn2" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/two_answer"/></LinearLayout>
- ChooseActivity.java
public class ChooseActivity extends AppCompatActivity { public static final String RESULT_ANSWER = "result_answer"; public static Intent newIntent(Context context) { return new Intent(context, ChooseActivity.class); } public static int getResultAnswer(Intent intent) { return intent.getIntExtra(RESULT_ANSWER, 0); } private Button btn1; private Button btn2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_choose); btn1 = (Button) findViewById(R.id.btn1); btn2 = (Button) findViewById(R.id.btn2); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(); i.putExtra(RESULT_ANSWER, 1); setResult(RESULT_OK, i); finish(); } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(); i.putExtra(RESULT_ANSWER, 2); setResult(RESULT_OK, i); finish(); } }); }}
- 如果要使用Snackbar,要加入依赖
compile 'com.android.support:design:24.0.0-beta1'
0 0
- Android:startActivityForResult用法
- Android:startActivityForResult用法
- Android startActivityForResult 详细用法
- Android startActivityForResult用法
- Android:startActivityForResult用法
- Android startActivityForResult基本用法
- Android-startActivityForResult用法
- Android startActivityForResult用法详解
- Android------startActivityForResult的详细用法
- Android中startActivityForResult()的用法
- Android------startActivityForResult的详细用法
- Android—startActivityForResult的用法
- Android------startActivityForResult的详细用法
- Android------startActivityForResult的详细用法
- Android------startActivityForResult的详细用法
- Android------startActivityForResult的详细用法
- startActivityForResult的用法(Android)
- Android------startActivityForResult的详细用法
- bzoj3998 [TJOI2015]弦论
- centos7启动Genymotion时报错,`CXXABI_1.3.8' not found和`GLIBCXX_3.4.20' not found,解决方案
- 用Excel VBA代码实现去重录入某字段内容
- Oracle 12c JDBC 连接
- POJ 1265 Area
- Android-startActivityForResult用法
- iOS 抽屉效果实现
- 两数之和(二)
- 火狐浏览器打开百度网页时,提示"您的连接不安全"怎么办
- Golang编程经验
- lightoj1062【几何(二分)】
- 生成函数
- 分布式消息队列Kafka集群安装
- Android TV填坑之旅(二)--VIEWPAGER的使用(包括循环播放)