Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在不同的活动中必须调用singleton socketIO类?_Java_Android_Sockets_Android Layout_Websocket - Fatal编程技术网

Java 在不同的活动中必须调用singleton socketIO类?

Java 在不同的活动中必须调用singleton socketIO类?,java,android,sockets,android-layout,websocket,Java,Android,Sockets,Android Layout,Websocket,我正在使用gotox-socket.io库进行套接字编程。我已经为socket创建了singleton类。我可以在主要活动中调用它,但我不能在其他活动中调用它。。。。这是我的单身班 public class MainActivity extends Activity { EditText uname, passwd; Button login; JSONObject json; SocketIOClient socket; @Override protected

我正在使用gotox-socket.io库进行套接字编程。我已经为socket创建了singleton类。我可以在主要活动中调用它,但我不能在其他活动中调用它。。。。这是我的单身班

public class MainActivity extends Activity {
    EditText uname, passwd;
    Button login;
    JSONObject json;
    SocketIOClient socket;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    socket = new SocketIOClient();
    try {
        SocketIOClient.initInstance();
    } catch (MalformedURLException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

    json = new JSONObject();
    uname = (EditText) findViewById(R.id.unameED);
    passwd = (EditText) findViewById(R.id.passwdED);
    login = (Button) findViewById(R.id.loginButton);
    login.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            try {
                json.put("username", uname.getText().toString().trim());
                json.put("password", passwd.getText().toString().trim());
              //request send to server    
                SocketIOClient.emit("login_request", json);

            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
    });

}

} 
此外,我还使用了抽象类来获取从单例类到活动的json resose。这是我的抽象类

    public abstract class ResponseHandler 
{
    private Context context;

    public abstract void execute (JSONObject jsonObject) throws JSONException;

    public ResponseHandler (Context ctx)
    {
        this.context = ctx;
    }

    public void handleObject(JSONObject jsonObject) throws Exception
    {
        execute(jsonObject);

    }
}

您是否考虑过在helper包(例如com.project.name.helpers)中创建一个GlobalClass并从那里调用它。像

public class GlobalClass extends Activity {
    public static SocketIOClient socket = new SocketIOClient();
}
导入GlobalClass后,您可以从活动中调用它,因为它是一个静态且已创建的类,如:

import com.project.name.helpers;
public SomeActivity extends Activity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        try{
            GlobalClass.socket.initInstance();
        }
        catch{
        }
    }
}