亲爱的客官,如果你对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传递数据时,需要注意数据的格式。如果数据格式不正确,则无法传递数据,从而导致数据返回失败。

四、总结

如果您对本文的内容感到满意,请在文章结尾处点击“顶一下”以表示您的肯定。如果您对本文不满意,也请点击“踩一下”,以便我们改进该篇文章。如果您想更深入地了解相关内容,可以查看文章下方的相关链接。