Итак, в Android/Java мне нужно получить глобальную переменную, которая является EditText[]
, которую я создаю над методом моей деятельности внутри onClickListener
. Вот переменная:Android: доступ к глобальной переменной внутри onClickListener
public class NCDTCPRelayActivity extends Activity {
final EditText[] relayLabelEdits = new EditText[n];
Где n
является еще одной глобальной переменной целое.
Моя проблема заключается в том, что для того, чтобы получить доступ к этим EditText
внутри onclickListener
я должен был сделать окончательный для доступа внутрь onClickListener, но мне нужно назначить relayLabelEdits
к новому EditText[]
, если значение п изменений, которые он имеет обыкновение делать ,
Ниже onClickListener
(основная часть приложения, чтобы открыть TCP-сокета и управления реле через Wi-Fi, так просто игнорировать информацию сокета и те System.out.println, которые указывают на relayLabelEdits
возврата нуль, если только переменной 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[]
внутри onClickListener
, не делая его окончательным?
Чтобы уточнить, в Java нет такой вещи, как глобальные переменные. 'relayLabelEdits' является обычным членом класса с областью пакета. (Это выглядит неправильно для меня. Почему вы хотите это сделать?) – Matthias
Поэтому я могу создать массив EditTexts в цикле for, который будет масштабироваться с количеством реле, которое они имеют на стороне сервера tcp. – Poodimizer
Как бы вы это сделали? – Poodimizer