所以在Android / Java中,我需要访问一个EditText[]
的全局变量,我在onCreate
内的onClickListener
方法之上创建了该变量。这是变量:
public class NCDTCPRelayActivity extends Activity {
final EditText[] relayLabelEdits = new EditText[n];
其中n
是另一个全局变量整数。
我的问题是,要在EditText
内访问这些onclickListener
,我必须在onClickListener中进行最终访问,但我需要将relayLabelEdits
分配给新的EditText[]
1}}如果n的值改变了它不会做的事情。
下面是onClickListener
(应用程序的主要部分是通过WiFi打开tcp套接字和控制中继,所以只需忽略套接字信息和那些指向{{1}的System.out.println除非relayLabelEdits
变量是最终的,否则返回null:
relayLabelEdits
关于如何在 Button save = new Button(this);
save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText[] saveTargets = relayLabelEdits;
System.out.println("Direct: " + relayLabelEdits[0]);
System.out.println("first try " + saveTargets[0]);
//Creates string to create the database names on the fly
String relayToSave;
int myNum = 0;
try {
myNum = Integer.parseInt(portEditText.getText().toString());
} catch(NumberFormatException nfe) {
Toast toast = Toast.makeText(getBaseContext(), "The Port Number you entered must only contain numbers", Toast.LENGTH_LONG);
toast.show();
return;
}
System.out.println(ipAEditText.getText().toString());
cPanel.saveString("ipA", ipAEditText.getText().toString());
cPanel.saveInt("port", myNum);
for (int i = 0; i < n; i++) {
relayToSave = "relay" + (i+1);
System.out.println("HERE I AM");
System.out.println(relayLabelEdits[i]);
cPanel.saveString(relayToSave, relayLabelEdits[i].getText().toString());
//cPanel.saveString(relayToSave, "It worked");
System.out.println("HERE I AM");
}
if (cPanel.connect() == true){
createMainContainer();
setContentView(sView);
getRelayNames();
displayRelayNames();
updateButtonText();
}
else {
Toast toast = Toast.makeText(getBaseContext(), "Could Not Connect, check IP address and Port Number", Toast.LENGTH_LONG);
toast.show();
}
}
});
内访问EditText[]
而不进行最终审核的任何想法?
答案 0 :(得分:1)
为什么不将侦听器设为外部类并将活动引用传递给它?