Android:在onClickListener中访问全局变量

时间:2012-02-02 17:42:26

标签: java android global-variables

所以在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[]而不进行最终审核的任何想法?

1 个答案:

答案 0 :(得分:1)

为什么不将侦听器设为外部类并将活动引用传递给它?

相关问题