编程实现Intent以隐式方法启动Activity,并完成数据传递和结果返回。
时间: 2024-02-17 10:03:29 浏览: 144
好的,以下是一个简单的例子,演示如何使用Intent以隐式方法启动Activity,并完成数据传递和结果返回。
首先,在你的Android项目中创建两个Activity:MainActivity和SecondActivity。
MainActivity中包含一个按钮,点击该按钮将启动SecondActivity,并传递一个字符串参数。
MainActivity.java:
```java
public class MainActivity extends AppCompatActivity {
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mButton = findViewById(R.id.button);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent("com.example.action.SECOND_ACTIVITY");
intent.putExtra("message", "Hello from MainActivity!");
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == RESULT_OK) {
String message = data.getStringExtra("response");
Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}
}
```
在这个MainActivity中,我们创建了一个按钮,当用户点击该按钮时,我们将使用一个Intent以隐式方法启动SecondActivity,并传递一个字符串参数。我们还使用startActivityForResult()方法启动SecondActivity,以便在SecondActivity结束时获取返回结果。
接下来,我们来实现SecondActivity。我们在SecondActivity中添加一个TextView和一个按钮。当用户点击按钮时,我们将把一个字符串返回到MainActivity。
SecondActivity.java:
```java
public class SecondActivity extends AppCompatActivity {
private TextView mTextView;
private Button mButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mTextView = findViewById(R.id.textView);
mButton = findViewById(R.id.button);
Intent intent = getIntent();
String message = intent.getStringExtra("message");
mTextView.setText(message);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent();
intent.putExtra("response", "Hello from SecondActivity!");
setResult(RESULT_OK, intent);
finish();
}
});
}
}
```
在这个SecondActivity中,我们首先获取MainActivity传递过来的字符串参数,并将其显示在TextView中。接着,我们创建一个新的Intent,将一个字符串返回到MainActivity,并使用setResult()方法设置返回结果。最后,我们使用finish()方法结束SecondActivity。
在AndroidManifest.xml文件中,我们需要为SecondActivity指定一个intent-filter,以便MainActivity可以使用隐式方法启动它。在这个intent-filter中,我们指定了一个action为com.example.action.SECOND_ACTIVITY,这与MainActivity中创建Intent时指定的action相同。
AndroidManifest.xml:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.intentdemo">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SecondActivity">
<intent-filter>
<action android:name="com.example.action.SECOND_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
```
现在,我们可以运行这个应用程序,并点击MainActivity中的按钮以启动SecondActivity。当用户在SecondActivity中点击按钮时,我们将返回一个字符串结果,并在MainActivity中显示Toast消息。
希望这个例子对你有所帮助!
阅读全文