2014-09-26 23 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{ 
     } 
    } 
} 
相關問題