如何在布局中添加意图共享的视图

Posted

技术标签:

【中文标题】如何在布局中添加意图共享的视图【英文标题】: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

感谢大家的帮助。

【问题讨论】:

忘记了:“大家好,...” 【参考方案1】:

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

这不实用,抱歉。

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

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

View 与创建它的活动相关

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

【讨论】:

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

正如CommonsWare所说,我想你可以

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

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

    SecondActivity

    中检索 数据

    用数据生成一个新的视图

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

=== 补充 ===

您可能希望从 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"传递给下一个活动。 我使用自定义类做到了这一点。非常感谢。

以上是关于如何在布局中添加意图共享的视图的主要内容,如果未能解决你的问题,请参考以下文章

从联系人意图添加联系人后如何刷新列表视图?

如何强制共享意图打开特定应用程序?

布局视图

如何实现在动态布局中添加更多视图在android中实现滚动视图

android 如何在布局开始时添加视图?

如何在表格布局中添加滚动视图?