【问题标题】:Android Display new Class without new IntentAndroid 显示没有新意图的新类
【发布时间】:2014-07-20 10:47:08
【问题描述】:

我有一个连接到数据库并返回 JSONArray 的 AsyncTask。数据显示在 ListView 中。现在,如果我单击 ListItem,我将使用 JSONObject 中的数据开始一个新的 Intent

Intent it = new Intent(DisplaySearchResults.this, Display.class);
try
{
   it.putExtra("ID", jArray.getJSONObject(position).getString("ID").toString());
   it.putExtra("TITLE", jArray.getJSONObject(position).getString("TITLE").toString());
   it.putExtra("STRING", jArray.getJSONObject(position).getDouble("STRING"));
   it.putExtra("SOME TEXT", jArray.getJSONObject(position).getString("SOME TEXT").toString())
} catch (JSONException e)
{
   e.printStackTrace();
}
startActivity(it);

现在可以用类似的东西来启动显示类

Display d = new Display(jsonArray);

【问题讨论】:

  • JSONArray 基本上是一个字符串,因此您可以将整个 JSON 对象作为额外的。
  • 谢谢 - 至少这样更容易:)

标签: android class android-intent


【解决方案1】:

不,你不能那样做。

为什么?

Display 是一个Activity,在 Android 中,Activity 生命周期由 Android 框架管理。这意味着 Android 框架决定何时创建任何 Activity 的新实例。

合同是:

  • 创建新的 Activity 实例时:Android 框架将调用 onCreate 方法为您提供初始化新 Activity 的机会。
  • 不允许您自己实例化新的 Activity(即通过调用 new
  • 您可以要求 Android 框架使用 Intent 创建任何 Activity 的新实例,Android 框架会异步为您完成。

为了完整起见,让我添加以下内容:

  • 在某些情况下,例如“屏幕旋转”,Android 框架可能会决定销毁并重新创建一个 Activity。为此:框架将重用最初用于创建 Activity 的 Intent。

  • 取决于 Intent 标志、Activity 启动模式以及目标 Activity 的实例是否已经存在:框架可能决定不创建目标 Activity 的新实例,而是将其带回到前面目标Activity的已经存在的实例

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多