亲爱的客官,如果你对startactivityforresult接收两个参数【startactivityforresult】不是很熟悉,那么你来对了地方。今天我将和大家分享一些关于startactivityforresult接收两个参数和startactivityforresult的知识,希望能够帮助大家更好地理解这个话题。
startActivityForResult: 使用和实现
在Android平台上,startActivityForResult()是一个常见的方法,用于启动另一个Activity来完成一项任务,之后返回到当前Activity。本文将介绍startActivityForResult的使用,包括其相关概念、实现方式以及使用技巧。不仅如此,你还将了解到使用startActivityForResult过程中需要注意的一些问题。
一、startActivityForResult的基本概念
1. 意义:启动另一个Activity来完成一项任务。
2. 用法:startActivityForResult(Intent intent, int requestCode)方法,requestCode是请求代码,用于识别返回的结果。
3. 返回值:onActivityResult(int requestCode, int resultCode, Intent data)方法,其中resultCode是结果代码,data是返回的结果数据。
二、如何实现
实现startActivityForResult方法,需要先在当前Activity中调用startActivityForResult()方法,然后在另一个Activity中调用setResult()方法,最后在当前Activity的onActivityResult()方法中获取返回结果。
下面我们来看一个例子:在当前Activity中调用系统联系人应用,选择联系人后返回并显示所选联系人的姓名。
1. 在当前Activity中调用系统联系人应用
```
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
```
其中,ACTION_PICK是一个预定义的Intent动作,用于在设备上选择一个特定类型的数据。ContactsContract.Contacts.CONTENT_URI是一个内容URI,可以用于从设备中选取联系人。
2. 在另一个Activity中返回所选联系人
```
Intent resultIntent = new Intent();
resultIntent.putExtra(\"name\", name);
setResult(Activity.RESULT_OK, resultIntent);
finish();
```
这里resultIntent是用于返回结果的Intent。在这个Intent中,我们通过putExtra()方法将所选联系人的姓名放到了名为“name”的Extra中。最后,调用setResult()方法将所选联系人返回给当前Activity并结束当前Activity。
3. 在当前Activity的onActivityResult()方法中获取返回结果
```
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == PICK_CONTACT && resultCode == Activity.RESULT_OK) {
// 获取所选联系人的姓名
String name = data.getStringExtra(\"name\");
// 显示所选联系人的姓名
mTextView.setText(name);
}
}
```
在这里,我们首先根据请求代码和结果代码判断是否成功返回结果。如果成功返回,我们就从Intent中获取所选联系人的姓名并在TextView中显示出来。
三、使用技巧
1. 子Activity向父Activity传递数据的方式:
(1)将数据放入Intent的Extra中,在setResult()方法中返回Intent。
(2)将数据放入Bundle中,在Intent的putExtras()方法中添加Bundle。
2. 可以通过Intent的addFlags()方法增加启动模式和标记,例如FLAG_ACTIVITY_CLEAR_TOP或FLAG_ACTIVITY_NEW_TASK。
3. onActivityResult()方法可以用于处理多个子Activity返回的结果,通过对请求代码的判断可以分别处理不同的结果。
四、使用startActivityForResult需要注意的问题
1. requestCode不能重复。
2. 需要根据结果代码判断结果是否成功。
3. 需要在每个Activity中正确设置resultIntent和resultCode,否则返回结果将会失败。
本文介绍了startActivityForResult的基本概念、实现方式以及使用技巧。通过这篇文章,我们可以更好地掌握该方法的使用。同时,在使用过程中需要注意各种问题。更多关于Android开发的相关文章,敬请关注我们的博客。
标题:掌握startActivityForResult方法,打造更优秀的Android应用!
随着Android技术的不断发展,越来越多的应用程序涌入人们的生活中。作为一名Android开发者,我们不仅要关注用户体验、功能的实用性,同时还要注重应用程序的流程和性能。在开发过程中,我们经常会使用startActivityForResult方法,本文将会深入介绍startActivityForResult的概念、使用方法以及注意事项,帮助大家掌握这一重要的工具,为打造更优秀的Android应用提供帮助。
一、startActivityForResult的概念
startActivityForResult是Android提供的一种用于启动Activity的方法。该方法可以启动一个新的Activity,并且可以在新Activity结束后回传数据给调用它的Activity。这个“返回”的数据就是用setResult方法设置的数据。
二、startActivityForResult的使用方法
在使用startActivityForResult方法时,一般分为以下几个步骤:
1.在当前Activity中调用startActivityForResult()方法启动另一个Activity
2.在启动的Activity中设置数据,并通过setResult()方法将数据返回给调用它的Activity。
3.在调用它的Activity(即当前Activity)中重写onActivityResult()方法,获得从启动的Activity返回的结果数据。
下面我们将具体介绍这个过程。
1.调用startActivityForResult()方法启动一个Activity
我们先来看一个简单的例子,如何用startActivityForResult()方法启动另一个Activity。下面代码片段演示了如何启动一个Activity并展示在一个TextView中:
```
public class MainActivity extends AppCompatActivity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1.启动一个新的Activity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 100);
}
});
}
}
```
2.设置数据并通过setResult()方法将数据返回给调用它的Activity
我们需要将数据返回给调用它的Activity,一般会在接收数据的Activity中使用setResult方法来设置返回的数据。下面代码片段演示了如何设置返回数据:
```
public class SecondActivity extends AppCompatActivity {
private EditText editText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
editText = findViewById(R.id.edit_text);
//2.设置返回数据并返回
findViewById(R.id.btn_confirm).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String data = editText.getText().toString();
Intent intent = new Intent();
intent.putExtra(\"data_return\", data);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
在上面代码中,我们在按钮点击事件中获取EditText控件中的输入内容,将其通过Intent装载,并设置返回的结果码为RESULT_OK(RESULT_OK是Activity提供的一种标准结果码,表示操作成功)。然后使用setResult()方法设置返回数据,最后通过finish()方法关闭当前Activity。
3.重写onActivityResult()方法,获得从启动的Activity返回的结果数据
在接收Activity中,使用startActivityForResult()方法启动另一个Activity后,需要重写onActivityResult()方法来获取从其他Activity返回的结果数据,如下面的代码片段所示:
```
public class MainActivity extends AppCompatActivity {
private TextView tv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//1.启动一个新的Activity
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 100);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100 && resultCode == RESULT_OK) {
String returnData = data.getStringExtra(\"data_return\");
tv.setText(returnData);
}
}
}
```
在上述代码中,我们重写了onActivityResult()方法,在该方法中获取启动Activity的返回数据,并设置在TextView中。
三、startActivityForResult的注意事项
1.启动的Activity必须实现onActivityResult()方法
当我们在使用startActivityForResult()方法时,启动的Activity需要实现onActivityResult()方法。如果没有实现该方法,则将无法接收到启动的Activity返回的数据。如果不需要数据返回,则可以忽略该方法。
2.启动Activity和接收Activity的请求码必须要对应
在调用startActivityForResult方法启动Activity时,需要传入一个请求码requestCode。在接收返回数据时,需要将该requestCode与启动Activity时传入的请求码进行比较。如果不一致,则无法接收到返回的数据。
3.需要注意数据的格式
在使用startActivityForResult()方法向另一个Activity传递数据时,需要注意数据的格式。如果数据格式不正确,则无法传递数据,从而导致数据返回失败。
四、总结
如果您对本文的内容感到满意,请在文章结尾处点击“顶一下”以表示您的肯定。如果您对本文不满意,也请点击“踩一下”,以便我们改进该篇文章。如果您想更深入地了解相关内容,可以查看文章下方的相关链接。