Android アプリのボタンクリックのイベントやハンドラのコールバック処理は、Activityのインナークラスにして、まとめておくと見やすいです。
source github
source github
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
btnLoginAlert = (Button)findViewById(R.id.btn_loginAlert);
btnLoginAlert.setOnClickListener(new LoginAlert());
etResponse = (EditText)findViewById(R.id.ed_response);
nicoMesssage = new NicoMessage();
nico = new NicoRequest(nicoMesssage);
}
class LoginAlert implements OnClickListener, Handler.Callback ,OnReceiveListener {
@Override
public void onClick(View v) {
key();
//ログインボタンをdisableにする
btnLogin.setEnabled(false);
btnLoginAlert.setEnabled(false);
final Handler handler = new Handler(this);
nicosocket = new NicoSocket(nicoMesssage);
nicosocket.setOnReceiveListener(this);
new Thread (new Runnable(){
public void run() {
nico.loginAlert(email.getText().toString(),password.getText().toString());
nicosocket.connectCommentServer(nico.getAlertAddress(), nico.getAlertPort(), nico.getAlertThread());
Message message = handler.obtainMessage(R.id.btn_loginAlert);
handler.sendMessage(message);
}}).start();
}
@Override
public boolean handleMessage(Message msg) {
if(nicosocket.isConnected()){
new Thread(nicosocket.getAlertSocketRun()).start();
btnLogin.setVisibility(View.GONE);
btnLoginAlert.setVisibility(View.GONE);
}else{
Toast.makeText(getApplicationContext(), "アラートログインに失敗しました", Toast.LENGTH_SHORT).show();
//ログインボタンをenableにする
btnLogin.setEnabled(true);
btnLoginAlert.setEnabled(true);
}
return true;
}
@Override
public void onReceive(String receivedMessege) {
etResponse.append(receivedMessege + "\n");
}
}