NullPointerException - 从mainactivity调用的方法中的fragment访问数组

时间:2014-08-29 19:00:36

标签: java android arrays sockets

我目前正致力于将一个字符串发送到多个服务器的小程序。我从mainactivity调用send方法,在fragmentA(fA)中调用。它运行良好,但我无法访问fragmentA中的套接字数组。它抛出NullPointerException

这是我的呼叫功能:

//MainActivity
@Override
public void send(String text) {
    FragmentA fA = new FragmentA();
    fA.send(text);
}

这是发送东西的功能:

//FragmentA

Socket s[]=new Socket[100];

//onactivitycreate
for(int i = 0; i<s.length;i++){
    s[i] = new Socket();
}

public void send(String text){
    for(int i = 0; i<s.length;i++){
        Log.d("","Send i = "+i);
        if(s[i].isConnected()){ //there error occurred
        //sending stuff
        }
    }
}

我可以从这个方法访问不是数组的变量,整数数组也不起作用。 也许还有另一种方法可以连接多个服务器并向它们发送相同的字符串。

编辑: 好的,所以我已经将套接字和函数移动到mainactivity,它可以工作,但我仍然想知道,如何使它在片段中工作,如何通过FragmentManager添加片段而不使用ip或tag(viewpager)。

谢谢。

1 个答案:

答案 0 :(得分:0)

您正在使用Fragment执行与UI完全无关的任务。您应该将代码移动到标准的java类。

但我认为抛出异常是因为你没有实例化Socket对象。根据发布的代码,循环永远不会执行