2013-06-14 3 views
-4

Я сделал третий класс, как вам это рекомендовалось !!Доступ к методу из другого класса

public class WebSocket_Connector { 

private static final String TAG = "ECHOCLIENT"; 
public final WebSocketConnection mConnection = new WebSocketConnection(); 

public void connect(final String wsuri) { 

     Log.d(TAG, "Connecting to: " + wsuri); 

     try { 
     mConnection.connect(wsuri, new WebSocketHandler() { 

      @Override 
      public void onOpen() { 
       Log.d(TAG, "Status: Connected to " + wsuri); 
       Log.d(TAG, "Connection successful!\n"); 
      } 

      @Override 
      public void onTextMessage(String payload) { 
       Log.d(TAG, "Got echo: " + payload); 
      } 

      @Override 
      public void onClose(int code, String reason) { 
       Log.d(TAG, "Connection closed."); 
      } 
     }); 
     } catch (WebSocketException e) { 

     Log.d(TAG, e.toString()); 
     } 
    } 

}

А из другого класса, я пытаюсь получить доступ к подключению прохождения типа строка "ID"

public class Myoffers_Fragment extends Fragment { 

private static final String TAG = "ECHOCLIENT"; 
public String id; 

public static Fragment newInstance(Myoffers context, int pos, 
     float scale) 
{ 
    Bundle b = new Bundle(); 
    b.putInt("pos", pos); 
    b.putFloat("scale", scale); 
    return Fragment.instantiate(context, Myoffers_Fragment.class.getName(), b); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    if (container == null) { 
     return null; 
    } 
    WebSocket_Connector A = new WebSocket_Connector(); 

    LinearLayout l = (LinearLayout) 
      inflater.inflate(R.layout.mf, container, false); 

    int pos = this.getArguments().getInt("pos"); 
    TextView tv = (TextView) l.findViewById(R.id.text); 
    tv.setText("Position = " + pos); 

    ImageView product_photo = (ImageView) l.findViewById(R.id.myoffer_image); 

    switch(pos){ 
    case 0: 
     product_photo.setImageResource(R.drawable.myoffers_0); 
     Log.d(TAG, "Current pos" + pos); 
     Toast.makeText(this.getActivity(), "Product" + pos + " is selected.", Toast.LENGTH_LONG).show(); 
     id = "product 0"; 
     A.mConnection.sendTextMessage(id); 
     break; 

Вы можете увидеть «A.mConnection.sendTextMessage (идентификатор);» ?? Правильно ли это сделать?

+0

почему Didnt этот вопрос показать любой effor ??? Я искал другие вопросы, и они не могли справиться со своей проблемой! –

+0

Во-первых, нет, где объявляется 'mConnection'. Во-вторых, вы не показываете код для 'sendTextMessage (id)', который может быть несуществующим методом для всех, что мы знаем. В-третьих, где объявляется 'id'? Уточните свой вопрос, и вы можете получить помощь. Из комментария к ответу, не следует ли это помечать Android также? –

+0

Существует mConnection и sendTextMessage (id) и объявленный id. –

ответ

2

Вам необходимо создать экземпляр своего класса, чтобы получить доступ к его общедоступным методам. Учитывая, что ваш метод подключения находится в вашем основном классе, вам придется объявить: Main main = new Main(); (также обратите внимание, что вы всегда должны использовать имена классов). Затем позвоните main.connect();.

+0

Я не думаю, что вам разрешено делать это с помощью классов 'Активность'. Наверное, самое лучшее, что нужно сделать, это перевести соединение к третьему классу утилиты, который вы можете создать, и использовать его как из классов «main», так и «Myoffers_Fragment». – vhallac

+0

не работает. Я добавил, main Main = new main(); и Main.connect(); но второй делает ошибку. –

+0

@ vhallac, что вы имеете в виду, перейдете к третьему классу утилиты? –

0

Код должен быть сам объяснительное

class A { 
    public void someMethod(){ 
     System.out.println("in someMethod"); 
    } 
} 

public class B { 

    public static void main(String [] args){ 
     A a = new A(); // first create the object of class A 
     a.someMethod();// call its method in class B 
    } 

} 
+0

Как вы упомянули, я поставил «main a = new main()» и «a.connect»() ;, но второй сделал ошибку. –

Смежные вопросы