问题很简单。但是我想知道我们到底在哪里参考GUI元素?就像最佳定义的地方:

final EditText edit =  (EditText) findViewById(R.id.text_xyz);
 edit.getText.tostring();

当我尝试在默认启动()内进行操作时,我会得到null值。因此,为了获得最佳实践,您是否建议一个单独的类,用于在main.xml中引用这些已经定义的GUI元素。从这里我们可以调用这些元素的各种方法,例如getText或setText?

有帮助吗?

解决方案

好吧,这取决于您的需求。通常,我将参考在活动中(作为课堂字段)中的小部件的参考 - 并将其设置在 onCreate 方法。我认为这是个好主意
无效的原因可能是您正在尝试致电 findViewById() 设置之前 contentView() 在你的 onCreate() 方法 - 请检查。

其他提示

我认为最快解决问题的方法是,您只是缺少括号 getText. 。只需添加 ()edit.getText().toString() 那应该解决

如果您在之前这样做 setContentView() 方法调用,然后值将为null。

这将导致无效:

super.onCreate(savedInstanceState);

Button btn = (Button)findViewById(R.id.btnAddContacts);
String text = (String) btn.getText();

setContentView(R.layout.main_contacts);

虽然这可以正常工作:

super.onCreate(savedInstanceState);
setContentView(R.layout.main_contacts);

Button btn = (Button)findViewById(R.id.btnAddContacts);
String text = (String) btn.getText();
String fname = ((EditText)findViewById(R.id.txtFirstName)).getText().toString();
String lname = ((EditText)findViewById(R.id.txtLastName)).getText().toString();
((EditText)findViewById(R.id.txtFullName)).setText(fname + " "+lname);

将以下内容放在setContentView()方法之后。

final EditText edit =  (EditText) findViewById(R.id.Your_Edit_ID);
String emailString = (String) edit.getText().toString();
Log.d("email",emailString);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top