Вниз  Android-программирование (1-ые посты)
- 1.02.2014 / 13:28
Grafen
  Пользователь

Grafen 
Сейчас: Offline
aNNiMON, спасибо то что нужно ;-)
- 1.02.2014 / 19:58
usb_device
  Пользователь

usb_device 
Сейчас: Offline
посоветуйте, каким образом можно организовать проверку button на нажатие, и собственно выполнения действия по нажатию. Не охота использовать больше 10 методов, обрабатывающих каждый свою кнопку (используя запись android:onClick="имя метода для обработки кнопки").
В идеале нужен или какой то switch(button_id) case button1: действие. Или что нибудь подобное.
- 1.02.2014 / 20:01
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
usb_device, android:onClick это быдлокод.
Назначь всем кнопкам один и тот же onClickListener и в его методе проверяй. Как раз и выйдет switch.
__________________
 let live
- 1.02.2014 / 20:02
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
usb_device, добавляешь классу интерфейс View.OnClickListener, задаешь обьекту View прослушку с помощью метода setOnClickListener(this) создаешь метод onClick(View arg0) в классе с интерфейсом OnClickListener и при нажатии на прослушиваемую видимость(View) в метод onClick передается обьект, на который нажали.

Изменено samodelkin (1.02 / 20:03) (всего 1 раз)
- 1.02.2014 / 20:04
usb_device
  Пользователь

usb_device 
Сейчас: Offline
aNNiMON, попробую, кстати по поводу онКлик - его в нескольких книжках которые я бегло просмотрел рекомендует чуть ли не гугл для использования в программах. Типа улучшает читабельность программы и тд.
- 1.02.2014 / 20:04
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Ничерта он не улучшает. xml-разметка для того и введена, чтоб отделить код от пользовательского интерфейса.
  1. class .. implements View.OnClickListener {
  2. //....
  3. final int[] ids = new int[] {
  4.     R.id.button2, R.id.button3, R.id.button4,
  5.     R.id.button5, R.id.button6
  6. };
  7. for (int i = 0; i < ids.length; i++) {
  8.     findViewById(ids[i]).setOnClickListener(this);
  9. }
  10.  
  11. @Override
  12. public void onClick(View view) {
  13.     switch (view.getId()) {
  14.         case R.id.button1: // и пошел
  15.     }

__________________
 let live

Изменено aNNiMON (1.02 / 20:05) (всего 1 раз)
- 1.02.2014 / 20:06
samodelkin
  Пользователь

samodelkin 
Сейчас: Offline
aNNiMON, спасибо, этот прием мне пригодится, посмотри сколько кода:
package com.example.spacerace;

import android.os.Bundle;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AbsoluteLayout;
import android.widget.LinearLayout;
import android.widget.TextView;


public class MenuActivity extends Activity implements OnClickListener{
public LinearLayout ll;
private TextView title,b1,b2,b3,b4,info; //заголовок меню,4 кнопки меню и информация об игре

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); // делаем портретную ориентацию
         requestWindowFeature(Window.FEATURE_NO_TITLE); // Убираем заголовок
         getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); // Убираем панель уведомлений
         title=new TextView(this);
         title.setTextSize(30);
         title.setTextColor(Color.WHITE);
         title.setGravity(Gravity.CENTER);
         title.setText("Космические гонки");
         LayoutParams lp=new LayoutParams(150,50);
         b1=new TextView(this);
         b1.setBackgroundResource(R.drawable.button);
         b1.setTextSize(25);
         b1.setTextColor(Color.BLACK);
         b1.setText("Игра");
         b1.setGravity(Gravity.CENTER);
         b1.setLayoutParams(lp);
         b2=new TextView(this);
         b2.setBackgroundResource(R.drawable.button);
         b2.setTextSize(25);
         b2.setTextColor(Color.BLACK);
         b2.setText("Об игре");
         b2.setGravity(Gravity.CENTER);
         b2.setLayoutParams(lp);
         b3=new TextView(this);
         b3.setBackgroundResource(R.drawable.button);
         b3.setTextSize(25);
         b3.setTextColor(Color.BLACK);
         b3.setText("Рекорд");
         b3.setGravity(Gravity.CENTER);
         b3.setLayoutParams(lp);
         b4=new TextView(this);
         b4.setBackgroundResource(R.drawable.button);
         b4.setTextSize(25);
         b4.setTextColor(Color.BLACK);
         b4.setText("Выход");
         b4.setGravity(Gravity.CENTER);
         b4.setLayoutParams(lp);
         info=new TextView(this);
         info.setTextColor(Color.WHITE);
         info.setTextSize(25);
         info.setBackgroundResource(R.drawable.bginfo);
         info.append("Цель игры- пролететь как можно больше , не столкнувшись с препятствиями. Управление: левая половина экрана-влево,правая половина экрана-вправо."+"\n");
         info.append("Игра 'космические гонки', автор: Сергей Самоделкин('Самодроид'), поддержка: http://samodroid.webnode.ru");
         ll=new LinearLayout(this);
         ll.setOrientation(LinearLayout.VERTICAL);
         ll.setGravity(Gravity.CENTER_HORIZONTAL|Gravity.TOP);
         ll.addView(title);
         ll.addView(b1);
         ll.addView(b2);
         ll.addView(b3);
         ll.addView(b4);
         b1.setOnClickListener(this);
         b2.setOnClickListener(this);
         b3.setOnClickListener(this);
         b4.setOnClickListener(this);
         info.setOnClickListener(this);
         ll.setBackgroundResource(R.drawable.head2);
         this.setContentView(ll);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}

public void onBackPressed(){
System.exit(0);
}

@Override
public void onClick(View arg0) {
if (arg0==this.b1){
}
if (arg0==this.b2) this.setContentView(info);
if (arg0==this.b3){
}
if (arg0==this.b4) System.exit(0);
if (arg0==this.info) this.setContentView(ll);

}

}
- 1.02.2014 / 20:06
Naik
  Пользователь

Naik 
Сейчас: Offline
usb_device, android:onClick="click"

public void click(View btn) {
     switch(btn.getId) {
         case R.id.btn_1:
           break;
           //...
           //..
           //.
     }
}
- 1.02.2014 / 20:10
usb_device
  Пользователь

usb_device 
Сейчас: Offline
Naik, хм, непонятно, разве метод click небудет срабатывать только после нажатия лишь кнопки с закрепленным за ней методом обработки click?
- 1.02.2014 / 20:12
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
usb_device, имеется в виду всем кнопкам этот обработчик поставить.
__________________
 let live
Наверх  Всего сообщений: 4453
Фильтровать сообщения
Поиск по теме
Файлы топика (184)