2014-09-26 61 views
0

我正在使用gottox-socket.io库进行套接字编程。我为套接字创建了单例类。我可以调用它的主要活动,但我不能把它叫成另一个活动....这是我的单身类..必须在不同的活动中调用单例socketIO类吗?

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 reposnse单身课程活动。这里是我的抽象类

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); 

    } 
} 

回答

0

你有没有想过在一个辅助包装(如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{ 
     } 
    } 
} 
相关问题