【问题标题】:How to add a view shared by intent in a layout如何在布局中添加意图共享的视图
【发布时间】:2020-02-24 15:59:05
【问题描述】:

我与“intent”分享了一个客户视图。我在“getSerializableExtra”的第二个活动中得到了它。

我无法在布局中添加此视图。我认为这是“上下文”的问题:

Intent intent = getIntent();  

int nbTextView = intent.getIntExtra(MainActivity.EXTRA_NUMBER, 0);   

MyTextView[] text= (MyTextView[]) intent.getSerializableExtra(MainActivity.EXTRA_TEXT);


this.myLayout= (LinearLayout) findViewById(R.id.layoutProp2);  

myLayout.addView(text[0]); // I think this part is a problem

感谢大家的帮助。

【问题讨论】:

  • 忘记了:“大家好,...”

标签: android android-layout android-intent android-view


【解决方案1】:

我与“intent”分享了一个客户视图。

这不实用,抱歉。

我无法在布局中添加此视图

你应该崩溃了。无论如何:

  • View 与创建它的活动相关

  • 通过Intent 传递内容会进行复制,因此您的第二个活动收到的View 最多是第一个活动的View 的副本

【讨论】:

  • 我必须在我的自定义视图中实现 Serializable:公共类 MyTextView 扩展 TextView 实现 Serializable 应用程序崩溃了,但由于我在我的类中实现了 Serializable 它不会崩溃。
  • @Haydens:“我必须在我的自定义视图中实现 Serializable”——是的,这是行不通的,因为 View 中有很多字段无法序列化。
【解决方案2】:

正如CommonsWare所说,我想你可以

  1. 传递可序列化/可打包的数据你分配给你的视图FirstActivity意图

    (如姓名、年龄、网址或其他任何东西......)

  2. SecondActivity

    中检索 数据
  3. 用数据生成一个新的视图

  4. 将此视图添加到您想要的位置

=== 补充 ===

您可能希望从 SecondActivity
检索 数据FirstActivity 然后通过 setResult()SecondActivity
中传递它 并在 FirstActivity

中的 onActivityResult() 上获取它

【讨论】:

  • 这就是我所做的。我在第二个活动中获取数据: MyTextView[] text = (MyTextView[]) Intent.getSerializableExtra(MainActivity.EXTRA_TEXT);但我无法将它添加到我的布局中。此行不起作用: this.myLayout= (LinearLayout) findViewById(R.id.layoutProp2); myLayout.addView(text[0]);
  • 我的意思是你的TextView中的data而不是TextView,比如你的TextView中的"Robert",然后我将"Robert"传递给下一个活动。
  • 我使用自定义类做到了这一点。非常感谢。
猜你喜欢
  • 2015-02-06
  • 1970-01-01
  • 2019-01-18
  • 2019-08-23
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
相关资源
最近更新 更多