2013-12-14 2 views
1

Я новичок в android и у меня проблемы с простыми вещами!OnClick Not Firing?

Вот некоторые основные код:

MainActivity:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    //Lets go ahead and set our buttons up. 
    ServerButton = (Button)this.findViewById(R.id.ServerButton); 
    ClientButton = (Button)this.findViewById(R.id.ClientButton); 
    BTServer = new BluetoothServerService(this, mHandler);  
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 
    public void ServerButtonClick(View v){ 
    Log.d("BLUETOOTH MAIN ACTIVITY", "It got here"); 
    BTServer.start(); 
} 

private final Handler mHandler = new Handler(){ 
    @Override 
    public void handleMessage(Message msg){ 
     switch (msg.what){ 
     case HANDLER_CHANGE_SERVER_STATUS: 
      switch(msg.arg1){ 
      case SERVER_STATUS_OFF: 
       CURRENT_SERVER_STATUS = SERVER_STATUS_OFF; 
       //We should probably add some logging, and the change to the button 
       break; 
      case SERVER_STATUS_ON: 
       CURRENT_SERVER_STATUS = SERVER_STATUS_ON; 
       //Again lets add some logging, etc. 
       break; 
      case SERVER_STATUS_ON_CONNECTED: 
       CURRENT_SERVER_STATUS = SERVER_STATUS_ON_CONNECTED; 
       //Again lets add some logging, etc. 
       break; 
      } 
     } 
     return; 
    } 
}; 

Мой XML выглядит следующим образом:

<Button 
    android:id="@+id/ServerButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_marginBottom="146dp" 
    android:layout_marginLeft="64dp" 
    android:text="Connect to Server" /> 

<Button 
    android:id="@+id/ClientButton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="28dp" 
    android:text="Start Server" 
    android:onClick="ServerButtonClick"/> 

В моих журналах я вижу журналы говорят он создает объект BTServer, но я не могу получить никаких журналов, чтобы отображаться, когда я c Лизать кнопку.

Любые предложения?

Спасибо!

+0

u означает, что вы не получаете onclick событие на ClientButton? – KOTIOS

+0

где есть метод нажатия кнопки ... –

+0

Не является ли метод нажатия кнопки указанным в XML? android: onClick = "ServerButtonClick" /> Это должно означать, что при щелчке он запускает public void ServerButtonClick (View v) { Log.d («BLUETOOTH MAIN ACTIVITY», «It got here»); BTServer.start(); } – Linux4Hope

ответ

1

определить действие щелчка для ClientButton внутри onCreate метода

ClientButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       // Perform action on click 
      } 
     }); 

также для ServerButton определить действие щелчка, как выше, как

ServerButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        // Perform action on click 
       } 
      }); 
+0

Итак, вы думаете, что я должен установить его в коде вместо XML? Я просто попробовал это, и это сработало, поэтому я буду использовать этот метод с этого момента. Любая подсказка, почему это не сработало из XML-файла? – Linux4Hope

+0

вы должны определить событие click в java-коде, XML не может вызвать какое-либо событие события –

+0

Ohhh ... Теперь имеет смысл больше! Я ценю помощь каждого. Я уверен, что вы скоро увидите много вопросов от меня! – Linux4Hope

1

Для меня, я считаю, что лучше активируйте свою активность в файле android.view.View.OnClickListener, а затем установите onClickListener вашей кнопки в свою активность.

Вот класс пример Активность:

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class Home extends Activity implements OnClickListener 
{ 
    @Override 
    public void onCreate (Bundle savedInstanceState) 
    { 
     super.onCreate (savedInstanceState); 

     setContentView (R.layout.activity_main); 

     Button serverButton = (Button)this.findViewById (R.id.ServerButton); 
     serverButton.setOnClickListener (this); 

     Button clientButton = (Button)this.findViewById (R.id.ClientButton); 
     clientButton.setOnClickListener (this); 
    } 

    @Override 
    public void onClick(View button) 
    { 
     int buttonId = button.getId(); 

     if (buttonId == R.id.ServerButton) 
     { 
      // Do server stuff. 
     } 

     if (buttonId == R.id.ClientButton) 
     { 
      // Do client stuff. 
     } 
    } 
} 
0

В Android при определении андроида: OnClick = "SomeMethod" приписывать он реализует только OnClickListener для вас.

Вы несете ответственность за определение метода onCLickListener и вызов своего метода ServerButtonClick.

Добавьте этот метод в свой метод OnCreate Activity. Это сработает.

ServerButton.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
      ServerButtonClick(); 
      } 
     }); 

Кроме того, андроид: OnClick метод работает только если уровень API> 4 года. поэтому, если вы ориентируетесь на минимальную версию SDK < 1.6, пожалуйста, не используйте ее