Android - 从不同的 Activity 中获取相同的 Intent

标签 android android-intent android-activity

我目前正在处理三个 Activity :mainActivity、readActivity 和 searchActivity。

我希望 readActivity 从其他两个 Activity 中获取 Intent(带有 SQLite 查询的字符串)。但到目前为止,我一直以这种方式处理 Activity :

在当前 Activity 中:

Intent intent = new Intent(this,ReadActivity.class);
String query = "SQLITE QUERY";
Intent.putExtra(intent_extra, query);
startActivity(intent);

在下一个 Activity 中:

Intent intent = getIntent();
String query = intent.getStringExtra(MainActivity.intent_extra);

有没有一种方法可以读取默认 Intent ,而无需从 Activity 的来源命名 Activity ?检查上次 Activity 的快速方法也可以!

提前谢谢您!

最佳答案

用作访问 EXTRA 的 key 的字符串定义在哪里并不重要。

您可以将额外 key 指定为资源文件中的字符串,并通过接收 Activity 访问它们:

资源文件strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="extra_sql_query">extra.SqlQuery</string>
</resources>

接收者

getIntent();
String query = intent.getStringExtra(getString(R.string.extra_sql_query);

来电者

Intent intent = new Intent(this,ReadActivity.class);
String query = "SQLITE QUERY";
intent.putExtra(getString(R.string.extra_sql_query, query);
startActivity(intent);

但是,如果只有一项 Activity ...

处理这些 Intent 时,最好将额外的 key 保存在接收 Activity 中。

接收者

public class ReadActivity extends Activity {
     public final static String EXTRA_SQL_QUERY = "sql.query";

getIntent();
String query = intent.getStringExtra(EXTRA_SQL_QUERY);

来电者

Intent intent = new Intent(this,ReadActivity.class);
String query = "SQLITE QUERY";
intent.putExtra(ReadActivity.EXTRA_SQL_QUERY, query);
startActivity(intent);

关于Android - 从不同的 Activity 中获取相同的 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19593442/

相关文章:

java - 我在微调器选择的值中遇到错误

android - 启动服务会抛出 IllegalAccessException

Android 开关拖放

android - 单元测试处理程序

android - flutter 力释放前景

android - Whatsapp 意向不在联系人中的特定号码

android - 如何创建选择器 Intent 以从 gmail 应用程序、yahoo 邮件应用程序或浏览器中进行选择?

ANDROID:在 HTTP 请求后启动 Activity 时应用程序崩溃

Android Activity.startActivity() 和 Dialog.show() 顺序

java - 如何按日期和时间仅选择今天和明天的 jsonarray 数据并放入 ListView 适配器