Ответы пользователя по тегу Java
  • Хочу подключиться к веб серваку и принять оттуда джейсон, вписав пароль и логин но подключения нет?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Это Android. Ты пермишен на доступ в интернет указал в манифесте? Также смущает URL: по коду у тебя GET запрос, а параметр data ты передаешь пустым. И ничего не увидел про авторизацию.
    Ответ написан
    Комментировать
  • Как правильно тестировать Android приложение?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Во-первых, модели вообще не должны знать с помощью чего вы выходите в интернет: OkHttp, Retrofit и т.п.

    Во-вторых, модели вообще ничего делать не должны. Надеюсь, вы говорите про классы бизнес-логики. Т.е. про то, что сейчас называют такими словами как UseCase или Interactor.

    Поэтому, для работы с API создаёте Interface, который описывает методы и их параметры для взаимодействия. Класс, реализующий данный интерфейс, передаётся в ваш интерактор через конструктор или метод-сеттер. Но конструктор лучше. А внутри этого класса у вас уже та или иная реализация работы с API. При этом ваш интерактор вообще не должен знать как там и что реализовано. У него есть знание только об интерфейсе класса.

    Для рабочей сборки приложения вы передайте реальный класс, а для тестов его тестовую реализацию: стабы или моки. И для юнит-тестов вам никакой интернет и мок-вебсерверы не нужны.
    Ответ написан
  • Пытаюсь разобраться в RxJava на javaFx, падает "hello world"?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Neonoviiwolf, похоже у вас библиотека подключена только в IDE, но отсутствует в JAR. Возьмите любой декомпилятор JAR-файлов и проверьте наличие библиотеки RxJava. Если её там нет, то нужно проверить настройки сборки.
    Ответ написан
  • Как лучше считывать такие числа по средствам java из строки?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Встроенного ничего нет. Но с регулярными выражениями можно легко реализовать:

    String src = "0.0-2.013896591961E-04-1.136868377216E-12";
    Pattern p = Pattern.compile("\\d+\\.\\d+(E-\\d+)?");
    Matcher m = p.matcher(src);
    while (m.find()) {
        try {
            double value = Double.parseDouble(m.group(0));
            System.out.println(value);
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    Тут можно попробовать - tpcg.io/cZrFFv
    Ответ написан
    Комментировать
  • Как правильно реализовать callback в java?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Callback надо реализовать в виде отдельного интерфейса и сказать, что наше активити реализует этот интерфейс. В результате мы в DoRequestInterface просто передаем ссылку на нашу активити. А в активити реализуем нужные два метода для Callback. Во избежание утечек, рекомендую callback оборачивать в мягкую ссылку.
    interface DoRequestInterface {
        void execute(String url, DoRequesCallback callback);
    }
    
    interface DoRequesCallback {
        void successReq(JSONObject response);
        void errorReq(VolleyError error);
    }
    
    public abstract class DoRequestClass implements DoRequestInterface {
    	@Override
      public void execute(String url, DoRequesCallback callback) {
          RequestQueue queue = Volley.newRequestQueue(context);
    			final WeakReference<DoRequesCallback> weakCallback = new WeakReference<DoRequesCallback>(callback);
          JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
              @Override
              public void onResponse(JSONObject response) {
    							DoRequesCallback callback = weakCallback.get();
    							if (callback != null) {
                  	callback.successReq(response);
    							}
              }
          }, new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
    						DoRequesCallback callback = weakCallback.get();
    						if (callback != null) {
                	callback.errorReq(error);
    						}
              }
    
          });
          queue.add(jsObjRequest);
      }
    }
    
    public class MainActivity extends AppCompatActivity implements DoRequesCallback {
    	
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		sendButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
              	DoRequestClass doRequestClass = new DoRequestClass();
    	          doRequestClass.execute("http://myserver.local", this);
    		      }
    		  });
    	}
    
    	@Override
    	public void successReq(JSONObject response){
    	    txtDisplay.setText("Response => "+response.toString());
    	}
    
    	@Override
    	public void errorReq(VolleyError error){
    	    txtDisplay.setText("Error => "+error.toString());
    	}
    }
    Ответ написан
    Комментировать
  • Почему результат кода разный?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    По-моему, вы с циклами намутили: массив у вас двумерный, но в обоих циклах вы запрашиваете длину только одного из индексов. Зато внутри в условиях подразумеваете использование обоих индексов. Вполне возможно, что ошибку вы не ловите в первом варианте кода из-за того, что используете другой порядок циклов.
    Ответ написан
    2 комментария
  • Из повара в программисты, возможно ли такое? Где пройти курсы в Питере и надо ли?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Всё получится и потом не пожалеете!!! Я сам с юных лет хотел стать программистом. В школе начал мучить ZX Spectrum. Потом первый курс в универе. Но безмозглость и плохая компания довели до отчисления в середине первого курса. А там армия. А из армии без профессии, да и до армии умудрился семьей обзавестить. Начал с охранника - 3 года, потом служба безопасности - 2 года, потом столяр-станочник - 1 год, потом монтажник рекламы, менеджер по рекламе, менеджер по продажам, отделочник, снова менеджер по продажам. Только ближе к 28 отучился на курсах 1С и стал программистом 1С. Там просидел пять лет, но всегда чувствовал что не то. Начал по книжкам писать свой проект для Android, который вел 1,5 года. Выложил его на гитхабе и начал пытаться пройти собеседования. Но браковали за первые же 5 минут - не хватало университетских знаний по алгоритмам, структурам данных и т.п. Потом параллельно работе в 1С взял один проект по фрилансу. Им понравилось и взяли на полную занятость. И вот уже два года как разработчик Android и iOS. И мой код намного лучше, чем код тех, кого нанимают, когда работы много и мне одному не потянуть.
    Уверен, что у вас не так всё запущенно как было у меня. Поэтому, если захотите и постараетесь, то сможете. И потом не пожалеете.
    Ответ написан
    4 комментария
  • Как получить из массива отдельные строки?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Используйте GridView. А TextView создавайте программно:
    1. Сначала разбиваем строку на массив
    2. Потом рандомно её перемешиваем
    3. Для каждого элемента массива со словом создаем программно TextView и добавляем его к нашему GridView
    Ответ написан
  • Android actionbar settings не отображается в углу?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Если у устройства есть аппаратная кнопка меню, то кнопка открытия меню на ActionBar не отображается.
    Ответ написан
    Комментировать
  • Как сделать шаблон для одинаковых записей в Android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Во-первых, очень странно выглядит затея со ScrollView вместо ListView. Последний с помощью адаптера легко решает поставленную задачу. Во-вторых, что мешает при использовании ScrollView задействовать наследуемый View с дполнительным полем/полями?
    Ответ написан
  • Как лучше перенести Android приложения на PC?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Совсем недавно делал кроссплатформенное приложение на JavaFX. Если использовать Ant, то можно делать сборку готовых бандлов под Win, OsX и Linux (правда собирать надо будет отдельно на каждой платформе). А так как это Java, то если отделить UI приложения через реализацию интерфейса, то вполне можно отдельно написать ядро на Java, собрать его в JAR, а потом использовать и для Android-приложения, и для настольных систем.
    Ответ написан
    Комментировать
  • Ввод в EditText. Как сделать, чтобы при вводе числа в конце приписывался знак доллара?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Как сказал ivanfenenko проблема в рекурсии. Сделайте так:
    enter.addTextChangedListener(new TextWatcher() {
        
        private boolean mFormating;
    
        @Override
        public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
        }
    
        @Override
        public void onTextChanged(CharSequence s, int start, int before, int count) {
    
        }
    
        @Override
        public void afterTextChanged(Editable s) {
            if (!mFormating) {
                mFormating = true;
                if(enter.getText().length() != 0) {
                    String ss= s.toString();
                    if (!ss.endsWith("$")) {
                        ss= ss + "$";
                        enter.setText(ss);
                    }
                } else {
                    result.setText(null);
                }
                mFormating = false;
            }
        }
    });

    1. Во-первых, выставляем флаг, чтобы не запускать код при изменении текста нашим кодом
    2. Во-вторых, добавляем проверку наличия знака '$' в конце, а то при каждой правке он у нас будет дописываться
    Ответ написан
    1 комментарий
  • Как решить проблему с json?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Вы пишете про JSON, а где сам код добавления/изъятия в JSON? Судя по вашей строке {"1","3","2" } уверен, что вы используете JSON неправильно. Если вы хотите передавать объект, то и передавайте JSONObject в виде
    {"gps_wifi":{"gps":"1", "wifi_mac":"3", "wifi":"2" }}
    . Тогда порядок значений не будет иметь роли. Вообще для этих целей удобно использовать Gson. Тогда добавление вашего объекта будет выглядеть как:
    new Gson().toJson(new temp_class_gps_wifi("1","2","3"))

    , а изъятие:
    new Gson().fromJson(json, temp_class_gps_wifi.class)

    Либо можете в ваш класс добавить два метода: toJson() и fromJson(), и написать нужный код вручную.
    Ответ написан
    Комментировать
  • Как сделать два события на одну кнопку?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    public class Main extends Activity {
    	private ImageView image;
    	private Button button;	
    	private Animation anim1;
    	private Animation anim2;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);		
    
    		image = (ImageView)findViewById(R.id.images);
    		button = (Button)findViewById(R.id.button);	
    
    		// получаем обе анимации		
    		anim1 = AnimationUtils.loadAnimation(this, R.anim.anim1);
    		anim2 = AnimationUtils.loadAnimation(this, R.anim.anim2);
    
    		// устанавливаем первый обработчик      
    		button.setOnClickListener(firstButtonListener);
    
    		// запускаем первую анимацию
    		image.startAnimation(anim1);
    	}
    
    	@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;
    	}
    
    	View.OnClickListener firstButtonListener = new View.OnClickListener() {
    		@Override           
    		public void onClick(View v) {
    			// запускаем вторую анимацию
    			image.startAnimation(anim2);
    			// меняем обработчик нажатия кнопки на второй
    			button.setOnClickListener(secondButtonListener);
    		}
    	}
    
    	View.OnClickListener secondButtonListener = new View.OnClickListener() {
    		@Override           
    		public void onClick(View v) {
    			// запускаем первую анимацию
    			image.startAnimation(anim1);
    			// возвращаем первый обработчик нажатия кнопки
    			button.setOnClickListener(firstButtonListener);
    		}
    	}    
    }
    Ответ написан
    3 комментария
  • Как использовать card view в android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    В статье Google, которую вы привели, есть пример кода и в нем написано:
    <android.support.v7.widget.CardView....
    А это значит, что никакие сторонние библиотеки не нужны, достаточно использовать готовые compatibility-библиотеки от Google.
    Ответ написан
    1 комментарий
  • Как реализовать алгоритм расчета даты, при заданной цикличности?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Народ, не надо изобретать велосипедов!!! Есть прекрасный класс Calendar и его методы roll() и add(), которые решают данную задачу одной строкой. К примеру:
    Calendar myCal = new GregorianCalendar(2014, 1, 12); // устанавливаем нужную нам дату
    myCal.add(Calendar.DAY_OF_YEAR, 4); // добавляем четыре дня 
    myCal.add(Calendar.HOUR, 10); // и ещё плюсуем 10 часиков сверху
    Date newDate = myCal.getTime(); // ну и получаем новую дату
    Ответ написан
    3 комментария
  • Как сменить точку входа в приложение под андроид?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    пробовал в манифесте добавить для второго активити, и удалить этот интент-фильтр для первого

    Этот способ работает и единственно верный. Как именно вы выясняете, что это не работает?
    Ответ написан
    4 комментария
  • Как импортировать готовую базу данных в Android?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Могу предложить свой кусок кода: dbLibraryHelper.java. Строка 69 в моем случае либо открывает существующую базу, либо создает новую. В вашем случае есть одна тонкость: чтобы использовать готовую базу, нужно заранее ее положить на карту памяти. В getAssetString() есть копирование assets в строку. В вашем же случае, нужно assets записать в файл. Как это сделать можно посмотреть в loadContentFromURL().
    Ответ написан
    Комментировать
  • Как вставить в активити с View кнопки?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Советую поступить так:
    1. Вынести класс PuzzleView в отдельный файл.
    2. Для активити создать layout в XML-файле. К примеру, это будет LinearLayout с кнопками и с объектом
    Ответ написан
    Комментировать
  • Почему не запускается HelloWordl в Eclipse (Android)?

    VYakushev
    @VYakushev
    Разработчик Android в Nowtaxi
    Во-первых, если есть такая возможность, то лучше выкинуть Eclipse и поставить Android Studio с того же сайта Google, где брали SDK
    А во-вторых, убедитесь что добавили все необходимые зависимости в настройках проекта. Ну, и неплохо было бы показать код MainActivity.
    Ответ написан