如何在布局中添加意图共享的视图
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"
传递给下一个活动。
我使用自定义类做到了这一点。非常感谢。以上是关于如何在布局中添加意图共享的视图的主要内容,如果未能解决你的问题,请参考以下文章