2

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

我希望 readActivity 从其他两个活动中的任何一个中获取一个 Intent(一个带有 SQLite 查询的字符串)。但是直到现在,我一直以这种方式处理活动:

在当前活动中:

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

在下一个活动中:

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

有没有办法读取默认意图而不命名活动的来源?检查最后一个活动的快速方法也可以!

先感谢您!

4

5 回答 5

1

你绝对可以这样做,虽然 1 个问题是

    Intent.putExtra(intent_extra, query);

应该

    intent.putExtra(MainActivity.intent_extra, query);

因为您必须将其添加到意图的变量中,而不是 android 类中,无论您希望将查询字符串传递给活动的任何位置。然后检索它,调用它

intent.getStringExtra(MainActivity.intent_extra);

和你一样。

于 2013-10-25T15:17:21.413 回答
1

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

您可以在资源文件中将 EXTRA-keys 指定为字符串并通过接收活动访问它们:

资源文件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);

但是,如果只有一项活动...

处理这些意图最好将额外密钥保存在接收活动中。

接收者

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);
于 2013-10-25T15:18:36.557 回答
0

是的你可以。

首先,改变

Intent.putExtra(intent_extra, query);

intent_extra到任何值。前任。

Intent.putExtra("the_query", query);

然后以它的名字接收它。

Intent intent = getIntent();
String query = intent.getStringExtra("the_query");
于 2013-10-25T15:13:52.387 回答
0
Intent intent = new Intent(this,ReadActivity.class);
String query = "SQLITE QUERY";
Intent.putExtra(MainActivity.intent_extra, query);
startActivity(intent);

这几乎与任何其他活动完全相同。见上面从 MainActivity 中获取常量 intent_extra (顺便说一下,应该大写)

于 2013-10-25T15:15:23.420 回答
0

您可以使用捆绑包,因此在接收活动中您调用 getIntent().getBundle() 并且您不在乎它来自哪里

于 2013-10-25T15:15:37.193 回答