我正在尝试使用intent.putExtra()将RadioButton发送到活动。
我使用字符串和其他对象,但我不知道如何创建RadioButton的实例。它的构造函数要求Context作为参数,它也没有简单的构造函数。有没有办法生成一个RadioButton对象而没有得到它没有这样的RadioButton radioButton = (RadioButton) findViewById(R.id.RadioButton);
?
编辑:澄清一下,我不想发送一个特定的RadioButton,只是向活动发出信号,要求它生成一个特性的RadioButton,以便下一个活动可以将它添加到自定义视图列表中使用适配器。
答案 0 :(得分:0)
RadioButton
是View
,这意味着它属于View层次结构,无法在它们之间自由发送。
此外,意图只能发送Parcelable
数据(视图不可分配)或Serializable
数据。虽然技术上可以做到这一点,但对于任何情况来说这绝对是错误的方法(充其量你想要发送由单选按钮代表的数据)
不发送视图的主要原因是它与Context
绑定。对于这种情况,您可以将上下文视为单个屏幕。您不希望在一个屏幕上有一个项目,只能在另一个屏幕上工作。
<强> ActivityA 强>
public static final String EXTRA_RADIO = "EXTRA_RADIO";
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra(EXTRA_RADIO, value);
startActivity(intent);
<强> ActivityB 强>
public void onCreate(...) {
...
RadioButton radio = findViewById(...);
Bundle bundle = getIntent().getExtras();
if (bundle != null) {
//examples - depending on data type
String value = bundle.getString(ActivityA.EXTRA_RADIO);
int value = bundle.getInteger(ActivityA.EXTRA_RADIO);
radio.setText(value);
}
...
}
答案 1 :(得分:-1)
您无法通过Caused by: java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:535)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:224)
at com.google.gwt.dev.SwingUI$3.run(SwingUI.java:258)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:302)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:738)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:699)
at java.awt.EventQueue$3.run(EventQueue.java:697)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:708)
发送Context
,但您需要Intent
建设。你可以在第二次活动中使用它。如果您要将RadioButton
的标签作为RadioButton
发送,请尝试以下操作:
<强> ActivityOne 强>
String
<强> ActivityTwo 强>
Intent i = new Intent(ActivityOne.this, ActivityTwo.class);
i.putExtra("label", "This is label");
startActivity(i);