Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 20 июн 2018, 20:01

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 215 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11  След.
Автор Сообщение
СообщениеДобавлено: 20 фев 2015, 15:53 

Зарегистрирован: 17 фев 2015, 12:34
Сообщений: 7
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.
Ребята, подскажите, пожалуйста.

Сделала все по уроку 10. Только не поняла. Если так просто можно реализовать через xml файл, то зачем способ использования MainActivity как обработчика (и для меня вообще оказался не простой).

P.s. я пока разбираюсь только в самых азах, но хочется знать как правильно (и почему).

Спасибо.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 фев 2015, 16:00 
Аватар пользователя

Зарегистрирован: 09 янв 2012, 14:45
Сообщений: 2386
Откуда: Самара
Благодарил (а): 102 раз.
Поблагодарили: 321 раз.
Цитата:
Только не поняла. Если так просто можно реализовать через xml файл, то зачем способ использования MainActivity как обработчика (и для меня вообще оказался не простой).

Сам по себе обработчик - это контроллер кнопки и он должен быть в других обработчиках. Все вьюшки, которые представляют собой XML код - это слой представления и он просто показывает что-то пользователю. Контроллеры и представление должны быть порознь. И очень странно что гугл сделал возможность добавлять обработчик в XML. В любом случае, я не советую это использовать. К тому же гугл в своих приложениях НЕ добавляет этот код в XML. Да и вообще почти никто не добавляет.

_________________
Изображение

А тот ли ты путь выбрал, разработчик?
Хочешь знать ошибки ответ? Загляни в logcat!


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 20 фев 2015, 16:16 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Алемарика писал(а):
Ребята, подскажите, пожалуйста.

Сделала все по уроку 10. Только не поняла. Если так просто можно реализовать через xml файл, то зачем способ использования MainActivity как обработчика (и для меня вообще оказался не простой).

P.s. я пока разбираюсь только в самых азах, но хочется знать как правильно (и почему).

Спасибо.


Через xml может быть и просто, но...
0) Самое главное - Гугл не рекомендует (дродебы где-то куда-то была ссылка)
1) Подход через интерфейсы более подходит для Java (и так как любой Android разработчик отчасти Java разработчик это ему удобнее)
2) Когда что-то происходит неявно, это не очень хорошо. Например над проектом работает два человека. Пусть это вы, кто делает обработчики в XML и кто-то, кто так не делает. Пусть тот второй напишет обработчик как он привык. Вы смотрите его код: о кнопка, о обработчик кнопки, все понятно. Теперь вы сделали через xml. Второй смотрит ваш код. О функция "onClickStart()", нигде не используется, пожалуй ее можно удалить. И он удалит и после этого проект даже может быть собирется (хотя я не проверял), но приложение точно упадет при нажатии этой злополучной кнопки. Если же реализовать все явно через интерфейсы, то: а) удалите интерфейс, ide начнет ругаться на setOnClickListener и @Override у метода onClick; б) удалите метод onClick - будет ругаться на отсутствие метода; в) а setOnClickListener вы не удалите, потому что в этой строчке четко и ясно говорится что назначается слушатель для кнопки.
3) xml это внешний вид, программирование оставьте для Java

а вообще пятница, вечер я устал, не слушайте меня.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 25 фев 2015, 14:43 

Зарегистрирован: 17 фев 2015, 12:34
Сообщений: 7
Благодарил (а): 2 раз.
Поблагодарили: 2 раз.
Mikhail_dev писал(а):
Сам по себе обработчик - это контроллер кнопки и он должен быть в других обработчиках. Все вьюшки, которые представляют собой XML код - это слой представления и он просто показывает что-то пользователю. Контроллеры и представление должны быть порознь. И очень странно что гугл сделал возможность добавлять обработчик в XML.


klblk писал(а):
Через xml может быть и просто, но...
0) Самое главное - Гугл не рекомендует (дродебы где-то куда-то была ссылка)
1) Подход через интерфейсы более подходит для Java (и так как любой Android разработчик отчасти Java разработчик это ему удобнее)
2) Когда что-то происходит неявно, это не очень хорошо. ...


Спасибо. Признаюсь, что надеялась, что Вы меня убедите делать через xml (ибо ну уж очень просто). Но аргументация столь сильна, что я даже не мыслю так больше делать ;)

Спасибо, что разложили в голове у меня все по полочкам.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 мар 2015, 13:48 

Зарегистрирован: 18 мар 2015, 13:39
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Ребята помогите пожалуйста. Только начал изучать Android, да и вообще программирование в целом. Пытаюсь сделать урок 10, вроде все правильно делаю (в Android Studio), но приложение в эмуляторе не запускается. Подскажите в чем может быть проблема?

MainActivity.java
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. package ru.startandroid.p0102ActivityListener;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.widget.TextView;
  10.  
  11.  
  12.     public class MainActivity extends Activity implements View.OnClickListener {
  13.  
  14.             TextView tvOut = (TextView) findViewById(R.id.tvOut);
  15.             Button btnOk = (Button) findViewById(R.id.btnOk);
  16.             Button btnCancel = (Button) findViewById(R.id.btnCancel);
  17.  
  18.             @Override
  19.             protected void onCreate(Bundle savedInstanceState) {
  20.                 super.onCreate(savedInstanceState);
  21.                 setContentView(R.layout.activity_main);
  22.             }
  23.  
  24.             @Override
  25.             public void onClick(View view) {
  26.             switch (view.getId()) {
  27.                 case R.id.btnOk:
  28.                 // кнопка ОК
  29.  
  30.                 tvOut.setText("Нажата кнопка ОК");
  31.                 break;
  32.                 case R.id.btnCancel:
  33.                 // кнопка Cancel
  34.                 tvOut.setText("Нажата кнопка Cancel");
  35.                 break;
  36.                 }
  37.             }
  38.     }
  39.  
  40.  

Лог ошибки
Код: [ Загрузить ] [ Скрыть ]
  1. 03-18 10:35:52.914    2014-2014/ru.startandroid.p0102ActivityListener D/AndroidRuntime﹕ Shutting down VM 
  2.     --------- beginning of crash 
  3. 03-18 10:35:52.966    2014-2014/ru.startandroid.p0102ActivityListener E/AndroidRuntime﹕ FATAL EXCEPTION: main 
  4.     Process: ru.startandroid.p0102ActivityListener, PID: 2014 
  5.     java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{ru.startandroid.p0102ActivityListener/ru.startandroid.p0102ActivityListener.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
  6.             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209) 
  7.             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
  8.             at android.app.ActivityThread.access$800(ActivityThread.java:144) 
  9.             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
  10.             at android.os.Handler.dispatchMessage(Handler.java:102) 
  11.             at android.os.Looper.loop(Looper.java:135) 
  12.             at android.app.ActivityThread.main(ActivityThread.java:5221) 
  13.             at java.lang.reflect.Method.invoke(Native Method) 
  14.             at java.lang.reflect.Method.invoke(Method.java:372) 
  15.             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
  16.             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
  17.      Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.view.Window.findViewById(int)' on a null object reference 
  18.             at android.app.Activity.findViewById(Activity.java:2071) 
  19.             at ru.startandroid.p0102ActivityListener.MainActivity.<init>(MainActivity.java:14) 
  20.             at java.lang.reflect.Constructor.newInstance(Native Method) 
  21.             at java.lang.Class.newInstance(Class.java:1572) 
  22.             at android.app.Instrumentation.newActivity(Instrumentation.java:1065) 
  23.             at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199) 
  24.             at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
  25.             at android.app.ActivityThread.access$800(ActivityThread.java:144) 
  26.             at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
  27.             at android.os.Handler.dispatchMessage(Handler.java:102) 
  28.             at android.os.Looper.loop(Looper.java:135) 
  29.             at android.app.ActivityThread.main(ActivityThread.java:5221) 
  30.             at java.lang.reflect.Method.invoke(Native Method) 
  31.             at java.lang.reflect.Method.invoke(Method.java:372) 
  32.             at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
  33.             at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
  34. 03-18 10:36:09.663    2014-2014/ru.startandroid.p0102ActivityListener I/Process﹕ Sending signal. PID: 2014 SIG: 9 


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 мар 2015, 14:42 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
findViewById() можно вызвать только после вызова setContentView().
И если вы действительно внимательно посмотрите урок, то увидите что там не так как у вас.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 18 мар 2015, 15:43 

Зарегистрирован: 18 мар 2015, 13:39
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
klblk писал(а):
findViewById() можно вызвать только после вызова setContentView().
И если вы действительно внимательно посмотрите урок, то увидите что там не так как у вас.

Поставил findViewById() после setContentView(). То же самое происходит. Да, у меня не так как в уроке, но это потому что урок делался для Eclipse, и много чего у меня в AS помечается как ошибка, методом проб и ошибок пришел к такому виду. Видимо где то что то неправильно, но он не подчеркивает, а просто в лог ошибку выводит(( Я вот не могу понять что именно у меня не так, и тяжело немножко сравнивать с кодом урока. Я пробовал просто код в конце урока вставить там почти все красненьким выделяет хотя все элементы я "обзываю" точь в точь как в уроках.

----------------------------
Странно, но решилась проблема тем что обозначил View элементы 2 раза.

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. package ru.startandroid.p0102ActivityListener;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import android.view.View;
  8. import android.widget.Button;
  9. import android.widget.TextView;
  10.  
  11.  
  12.     public class MainActivity extends Activity implements View.OnClickListener {
  13.  
  14.  
  15.  
  16.             @Override
  17.             protected void onCreate(Bundle savedInstanceState) {
  18.                 super.onCreate(savedInstanceState);
  19.                 setContentView(R.layout.activity_main);
  20.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  21.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  22.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  23.                 btnOk.setOnClickListener(this);
  24.                 btnCancel.setOnClickListener(this);
  25.                
  26.             }
  27.  
  28.                  
  29.  
  30.             @Override
  31.             public void onClick(View v) {
  32.  
  33.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  34.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  35.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  36.             switch (v.getId()) {
  37.                 case R.id.btnOk:
  38.                 // кнопка ОК
  39.  
  40.                 tvOut.setText("Нажата кнопка ОК");
  41.                 break;
  42.                 case R.id.btnCancel:
  43.                 // кнопка Cancel
  44.                 tvOut.setText("Нажата кнопка Cancel");
  45.                 break;
  46.                 }
  47.             }
  48.     }
  49.  
  50.  


Если обозначить их только в "onCreate", то прога ругается на то что эти элементы неизвестны (я так понял) в "onClick".


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 мар 2015, 07:30 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Думаю нужно вначале почитать книжку о Java, т.к. у вас проблема с элементарными вещами. Ну и неужели сложно посмотреть как это сделано в уроке?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 мар 2015, 09:29 

Зарегистрирован: 18 мар 2015, 13:39
Сообщений: 3
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
klblk писал(а):
Думаю нужно вначале почитать книжку о Java, т.к. у вас проблема с элементарными вещами. Ну и неужели сложно посмотреть как это сделано в уроке?

Неужели так сложно показать мне конкретно где ошибка? Неужели так сложно прочитать то, о чем я писал в предыдущем посте про урок, Eclipse и Android studio?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 19 мар 2015, 10:56 
Аватар пользователя

Зарегистрирован: 18 окт 2012, 11:17
Сообщений: 1098
Откуда: г. Красноярск
Благодарил (а): 26 раз.
Поблагодарили: 279 раз.
Rozbyn писал(а):
klblk писал(а):
Думаю нужно вначале почитать книжку о Java, т.к. у вас проблема с элементарными вещами. Ну и неужели сложно посмотреть как это сделано в уроке?

Неужели так сложно показать мне конкретно где ошибка? Неужели так сложно прочитать то, о чем я писал в предыдущем посте про урок, Eclipse и Android studio?


А откуда я знаю где у вас ошибка, если я не знаю что за ошибка?
Написание кода в Eclipse и AS ничем не отличается!
Вот ваш код:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class MainActivity extends Activity implements View.OnClickListener {
  2.  
  3.  
  4.  
  5.             @Override
  6.             protected void onCreate(Bundle savedInstanceState) {
  7.                 super.onCreate(savedInstanceState);
  8.                 setContentView(R.layout.activity_main);
  9.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  10.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  11.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  12.                 btnOk.setOnClickListener(this);
  13.                 btnCancel.setOnClickListener(this);
  14.                
  15.             }
  16.  
  17.                  
  18.  
  19.             @Override
  20.             public void onClick(View v) {
  21.  
  22.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  23.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  24.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  25.             switch (v.getId()) {
  26.                 case R.id.btnOk:
  27.                 // кнопка ОК
  28.  
  29.                 tvOut.setText("Нажата кнопка ОК");
  30.                 break;
  31.                 case R.id.btnCancel:
  32.                 // кнопка Cancel
  33.                 tvOut.setText("Нажата кнопка Cancel");
  34.                 break;
  35.                 }
  36.             }
  37.     }


Вот код из урока (полностью правильный и корректный):
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class MainActivity extends Activity implements OnClickListener {
  2.  
  3.    TextView tvOut;
  4.    Button btnOk;
  5.    Button btnCancel;
  6.  
  7.    /** Called when the activity is first created. */
  8.    @Override
  9.    public void onCreate(Bundle savedInstanceState) {
  10.      super.onCreate(savedInstanceState);
  11.      setContentView(R.layout.main);
  12.  
  13.      // найдем View-элементы
  14.      tvOut = (TextView) findViewById(R.id.tvOut);
  15.      btnOk = (Button) findViewById(R.id.btnOk);
  16.      btnCancel = (Button) findViewById(R.id.btnCancel);
  17.  
  18.      // присваиваем обработчик кнопкам
  19.      btnOk.setOnClickListener(this);
  20.      btnCancel.setOnClickListener(this);
  21.    }
  22.  
  23.    @Override
  24.    public void onClick(View v) {
  25.      // по id определеяем кнопку, вызвавшую этот обработчик
  26.      switch (v.getId()) {
  27.      case R.id.btnOk:
  28.        // кнопка ОК
  29.        tvOut.setText("Нажата кнопка ОК");
  30.        break;
  31.      case R.id.btnCancel:
  32.        // кнопка Cancel
  33.        tvOut.setText("Нажата кнопка Cancel");
  34.        break;
  35.      }
  36.    }
  37.  
  38.  }


Найдите отличия? Какие ошибки правильный вариант вызывает в AS?
И спрашивая "какие", я хочу получить конкретный текст ошибки, а не гадать что там у вас происходит. Вариантов может быть куча (неумения импортировать классы, косяки в xml, ошибки в градле и т.д.).


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 апр 2015, 13:28 

Зарегистрирован: 06 апр 2015, 13:09
Сообщений: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
klblk писал(а):
Rozbyn писал(а):
klblk писал(а):
Думаю нужно вначале почитать книжку о Java, т.к. у вас проблема с элементарными вещами. Ну и неужели сложно посмотреть как это сделано в уроке?

Неужели так сложно показать мне конкретно где ошибка? Неужели так сложно прочитать то, о чем я писал в предыдущем посте про урок, Eclipse и Android studio?


А откуда я знаю где у вас ошибка, если я не знаю что за ошибка?
Написание кода в Eclipse и AS ничем не отличается!
Вот ваш код:
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class MainActivity extends Activity implements View.OnClickListener {
  2.  
  3.  
  4.  
  5.             @Override
  6.             protected void onCreate(Bundle savedInstanceState) {
  7.                 super.onCreate(savedInstanceState);
  8.                 setContentView(R.layout.activity_main);
  9.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  10.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  11.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  12.                 btnOk.setOnClickListener(this);
  13.                 btnCancel.setOnClickListener(this);
  14.                
  15.             }
  16.  
  17.                  
  18.  
  19.             @Override
  20.             public void onClick(View v) {
  21.  
  22.                 TextView tvOut = (TextView) findViewById(R.id.tvOut);
  23.                 Button btnOk = (Button) findViewById(R.id.btnOk);
  24.                 Button btnCancel = (Button) findViewById(R.id.btnCancel);
  25.             switch (v.getId()) {
  26.                 case R.id.btnOk:
  27.                 // кнопка ОК
  28.  
  29.                 tvOut.setText("Нажата кнопка ОК");
  30.                 break;
  31.                 case R.id.btnCancel:
  32.                 // кнопка Cancel
  33.                 tvOut.setText("Нажата кнопка Cancel");
  34.                 break;
  35.                 }
  36.             }
  37.     }


Вот код из урока (полностью правильный и корректный):
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class MainActivity extends Activity implements OnClickListener {
  2.  
  3.    TextView tvOut;
  4.    Button btnOk;
  5.    Button btnCancel;
  6.  
  7.    /** Called when the activity is first created. */
  8.    @Override
  9.    public void onCreate(Bundle savedInstanceState) {
  10.      super.onCreate(savedInstanceState);
  11.      setContentView(R.layout.main);
  12.  
  13.      // найдем View-элементы
  14.      tvOut = (TextView) findViewById(R.id.tvOut);
  15.      btnOk = (Button) findViewById(R.id.btnOk);
  16.      btnCancel = (Button) findViewById(R.id.btnCancel);
  17.  
  18.      // присваиваем обработчик кнопкам
  19.      btnOk.setOnClickListener(this);
  20.      btnCancel.setOnClickListener(this);
  21.    }
  22.  
  23.    @Override
  24.    public void onClick(View v) {
  25.      // по id определеяем кнопку, вызвавшую этот обработчик
  26.      switch (v.getId()) {
  27.      case R.id.btnOk:
  28.        // кнопка ОК
  29.        tvOut.setText("Нажата кнопка ОК");
  30.        break;
  31.      case R.id.btnCancel:
  32.        // кнопка Cancel
  33.        tvOut.setText("Нажата кнопка Cancel");
  34.        break;
  35.      }
  36.    }
  37.  
  38.  }


Найдите отличия? Какие ошибки правильный вариант вызывает в AS?
И спрашивая "какие", я хочу получить конкретный текст ошибки, а не гадать что там у вас происходит. Вариантов может быть куча (неумения импортировать классы, косяки в xml, ошибки в градле и т.д.).


Добрый день! У меня таже проблема, в AS неполучается реализовать этод метод т.к студия ругается примерно так:


Вложения:
Комментарий к файлу: А при нажатии на Alt+Enter получается вот так
Безымянный3.jpg
Безымянный3.jpg [ 326.5 KiB | Просмотров: 4590 ]
Безымянный2.jpg
Безымянный2.jpg [ 313.24 KiB | Просмотров: 4590 ]
Безымянный1.jpg
Безымянный1.jpg [ 316.13 KiB | Просмотров: 4590 ]
Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 06 апр 2015, 13:58 
Аватар пользователя

Зарегистрирован: 02 янв 2015, 17:36
Сообщений: 18
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Sergiy_GT, замените строчку "import android.content.DialogInterface" на "import android.view.View.OnClickListener"


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 07 апр 2015, 20:51 

Зарегистрирован: 07 апр 2015, 20:36
Сообщений: 2
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Долго не мог понять в чем дело(извиняюсь, если дублирую кого-то) - привязал функцию третьим быстрым способом к кнопке.
Код: [ Загрузить ] [ Скрыть ]
  1. public class MainActivity extends ActionBarActivity { 
  2.  
  3.     Button myBtn; 
  4.     TextView myTxt; 
  5.  
  6.     @Override 
  7.     protected void onCreate(Bundle savedInstanceState) { 
  8.         super.onCreate(savedInstanceState); 
  9.         setContentView(R.layout.activity_main); 
  10.         myBtn = (Button) findViewById(R.id.myBtn); 
  11.         myTxt = (TextView) findViewById(R.id.myTxt); 
  12.  
  13.         if (savedInstanceState == null) { 
  14.             getSupportFragmentManager().beginTransaction() 
  15.                     .add(R.id.container, new PlaceholderFragment()) 
  16.                     .commit(); 
  17.         } 
  18.     } 
  19.  
  20.     public void onClickStart(View v){ 
  21.         myTxt.setText("test"); 
  22.     } 
  23.  

Вот с таким кодом приложение вылетает при нажатии с исключением нулевого указателя. Если поиск по id перекинуть в саму функцию, то все нормально. В чем тут дело? Сам объект Кнопка принадлежит же классу mainActivity, и если инициализация происходит в одной её функции, то в другой должна нормально использоваться? Или мне пока стоит отложить андроид и идти учить азы явы?:)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 апр 2015, 19:51 

Зарегистрирован: 06 апр 2015, 13:09
Сообщений: 11
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Yennefer писал(а):
Sergiy_GT, замените строчку "import android.content.DialogInterface" на "import android.view.View.OnClickListener"

Да, спасибо, разобрался.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 27 апр 2015, 21:34 

Зарегистрирован: 27 апр 2015, 21:25
Сообщений: 7
Благодарил (а): 2 раз.
Поблагодарили: 1 раз.
Здравствуйте. при изучении этого урока тоже возник вопрос в AndroidStudoi с OnClickListener.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 29 апр 2015, 01:50 

Зарегистрирован: 29 апр 2015, 01:34
Сообщений: 1
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Посмотрел урок, появился вопрос:
можно ли после выполнения замены текста обработчиком сразу задать новый текст на кнопке?
Далее, при повторном клике на одну из двух кнопок текст снова менялся на новый и т.д.
Вроде как можно в цикл все загнать, но не представляю, каким образом....


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 май 2015, 15:56 

Зарегистрирован: 23 фев 2015, 13:04
Сообщений: 7
Благодарил (а): 1 раз.
Поблагодарили: 1 раз.
damager82 писал(а):
Код: [ Загрузить ] [ Скрыть ]
  1.     public void onBtnClick(View v) { 
  2.         switch (v.getId()) { 
  3.         case R.id.button1: 
  4.             Log.d("qwe", "button1"); 
  5.             break; 
  6.         case R.id.button2: 
  7.             Log.d("qwe", "button2"); 
  8.             break;             
  9.         } 
  10.     } 

Здравствуйте! У меня Android Studio по умолчанию создает параметры как здесь public void onBtnClick(View v), но в уроках написано public void onBtnClick(View view). Есть ли какая-то разница? Как правильно?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 11 май 2015, 16:04 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
driversti писал(а):
damager82 писал(а):
Код: [ Загрузить ] [ Скрыть ]
  1.     public void onBtnClick(View v) { 
  2.         switch (v.getId()) { 
  3.         case R.id.button1: 
  4.             Log.d("qwe", "button1"); 
  5.             break; 
  6.         case R.id.button2: 
  7.             Log.d("qwe", "button2"); 
  8.             break;             
  9.         } 
  10.     } 

Здравствуйте! У меня Android Studio по умолчанию создает параметры как здесь public void onBtnClick(View v), но в уроках написано public void onBtnClick(View view). Есть ли какая-то разница? Как правильно?


v и view это произвольные названия для передаваемых аргументов.

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 сен 2015, 20:24 

Зарегистрирован: 10 сен 2015, 20:08
Сообщений: 2
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Посмотрел урок, почитал комментарии, но так и не могу понять как лучше обрабатывать события
таким образом, для каждой кнопки писать так:
Код: [ Загрузить ] [ Скрыть ]
  1. (findViewById(R.id.btnCode)).setOnClickListener(new View.OnClickListener() { 
  2.             @Override 
  3.             public void onClick(View v) { 
  4.                 etCode.setText(interpretator.codedMessage(etDeCode.getText().toString(), 
  5.                         getResources().getStringArray(R.array.symbol), getResources().getStringArray(R.array.code))); 
  6.             } 
  7.         }); 
  8.         (findViewById(R.id.btnDeCode)).setOnClickListener(new View.OnClickListener() { 
  9.             @Override 
  10.             public void onClick(View v) { 
  11.                 etDeCode.setText(interpretator.encodeMessage(etCode.getText().toString(), 
  12.                         getResources().getStringArray(R.array.symbol), getResources().getStringArray(R.array.code))); 
  13.             } 
  14.         }); 


или же использовать такой способ:
Код: [ Загрузить ] [ Скрыть ]
  1. public void onClick(View v) 
  2.     { 
  3.         switch (v.getId()) 
  4.         { 
  5.             case R.id.btnCreate: 
  6.             { 
  7.                 LinearLayout.LayoutParams lParams=new LinearLayout.LayoutParams(wrapContent,wrapContent); 
  8.  
  9.                 int btnGravity= Gravity.LEFT; 
  10.  
  11.                 switch (rgGravity.getCheckedRadioButtonId()) 
  12.                 { 
  13.                     case R.id.rbLeft: 
  14.                     { 
  15.                 
  16.     } 


или же есть какой другой способ, так как все это кажется громоздким.
Подскажите пожалуйста как будет выглядеть наиболее правильный вариант.


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: 10 сен 2015, 20:56 
Аватар пользователя

Зарегистрирован: 23 ноя 2013, 16:08
Сообщений: 1107
Откуда: Ukraine
Благодарил (а): 31 раз.
Поблагодарили: 175 раз.
[quote="YAndrei"или же есть какой другой способ, так как все это кажется громоздким.
Подскажите пожалуйста как будет выглядеть наиболее правильный вариант.[/quote]

Код: [ Загрузить ] [ Скрыть ]
  1. свич(вью.ид){ 
  2.    case бтн1: 
  3.       myMethod1();   
  4.       break; 
  5.    case бтн2: 
  6.       myMethod2();   
  7.       break; 
  8.  

_________________
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 215 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB