Android-startActivityForResult用法
2016-12-02 00:07
393 查看
从子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
一个例子的效果图
![](https://img-blog.csdn.net/20161201235722131)
Demo目录
![](https://img-blog.csdn.net/20161202000015197)
字符串资源
activity_main.xml
MainActivity.java
activity_choose.xml
ChooseActivity.java
如果要使用Snackbar,要加入依赖
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'
相关文章推荐
- Android------startActivityForResult的详细用法
- Android startActivityForResult()的用法
- startActivityForResult的用法(Android)
- android startActivityForResult(Intent intent, int requestCode)用法
- Android startActivityForResult(intent, requestCode)的用法。
- Android多界面切换之 startActivity() 和 startActivityForResult()用法详解
- Android Activity 之 startActivityForResult用法详解
- Android------startActivityForResult的详细用法
- Android------startActivityForResult的详细用法
- Android中startActivityForResult()的用法
- Android中StartActivityForResult的基本用法
- Android startActivityForResult(intent, requestCode)的用法。
- android新手教程——startActivityForResult的用法
- android: startActivityForResult用法详解
- Android startActivityForResult()和onActivityResult()的用法
- Android—startActivityForResult的用法
- android startActivityForResult的用法
- Android startActivityForResult()和onActivityResult()的用法
- Android多界面切换之 startActivity() 和 startActivityForResult()用法详解
- android startActivityForResult和setResult用法解析