Это может произойти, если в вашем AndroidManifest.xml дважды объявлена ваша MainActivity.
Еще одна возможная причина: вы изменили активность запуска. Подсказка: никогда не делайте этого с уже опубликованными приложениями! Причины, обсуждаемые в блоге разработчиков Android .
Обновите вопрос, у Вас есть список CompanyNames доступным Вам? Я спрашиваю потому что Вы, возможно, способный использовать алгоритм Levenshtein для нахождения отношений между списком CompanyNames и LocationNames.
Обновление
Нет списка Названий компаний, я должен буду генерировать название компании с Названия самого описательного или лучшего расположения, которое представляет несколько местоположений.
Хорошо... попробуйте это:
Целая цель вышеупомянутых действий состоит в том, чтобы автоматизировать части и ограничить объем Вашей проблемы. Это совсем не прекрасно, но надо надеяться избавит Вас от необходимости пройти записи 18K вручную.
Я должен был сделать это прежде. Единственный реальный способ сделать это состоит в том, чтобы вручную подойти различные местоположения. Используйте консольный интерфейс своей базы данных и группирующий избранные операторы. Во-первых, добавьте свое поле "Company Name". Затем:
SELECT count(*) AS repcount, "Location Name" FROM mytable
WHERE "Company Name" IS NULL
GROUP BY "Location Name"
ORDER BY repcount DESC
LIMIT 5;
Фигура, какая компания местоположение наверху списка принадлежит и затем обновляет Ваше поле названия компании с ОБНОВЛЕНИЕМ... ГДЕ "Название Местоположения" = оператор "The Location".
P.S. - необходимо действительно выломать названия компаний и названия местоположения в отдельные таблицы и обратиться к ним их первичными ключами.
Обновление: - ничего себе - никакие дубликаты? Сколько записей Вы имеете?
Я собирался рекомендовать некоторый сложный маркерный алгоритм соответствия, но это действительно хитро для разбираний и если Вы - данные, не имеет большой корреляции (опечатки, и т.д.) затем это не собирается давать очень хорошие результаты.
Я рекомендовал бы, чтобы Вы отправили задание Amazon Mechanical Turk и позволили человеку уладить его.
Идеально, Вы, вероятно, хотели бы отдельную таблицу под названием Компания и затем company_id столбец в этой таблице "Location", которая является внешним ключом к первичному ключу таблицы Company, вероятно, названному идентификатором. Это избежало бы небольшого количества текстового дублирования в этой таблице (более чем 18 000 строк, целочисленный внешний ключ оставит довольно мало свободного места по varchar столбцу).
Но Вы все еще сталкиваетесь с методом для загрузки той таблицы Company и затем правильно соединения его со строками в Месте. Нет никакого общего решения, но Вы могли сделать что-то вдоль этих строк:
Если можно сделать копию таблицы Location, можно постепенно создавать серию SQL-операторов для заполнения company_id внешнего ключа. Если Вы делаете ошибку, можно только запустить и повторно выполнить сценарий на грани отказа.
Да, тот шаг 4 от моего предыдущего сообщения является doozy.
Независимо от того, что, Вы, вероятно, оказываетесь перед необходимостью делать часть этого вручную, но Вы можете автоматизировать объем его. Для местоположений в качестве примера Вы дали, запрос как следующее установит соответствующее company_id значение:
UPDATE Location
SET Company_ID = 1
WHERE (LOWER(Location_Name) LIKE '%to_n shop%'
OR LOWER(Location_Name) LIKE '%tts%')
AND Company_ID IS NULL;
Я полагаю, что это соответствовало бы Вашим примерам (я добавил IS NULL
часть для не перезаписи ранее набора значения Company_ID) но конечно в 18 000 строк Вы оказываетесь перед необходимостью быть довольно изобретательными для обработки различных комбинаций.
Что-то еще, что могло бы помочь, должно будет использовать имена в Компании для генерации запросов как тот выше. Вы могли сделать что-то как следующее (в MySQL):
SELECT CONCAT('UPDATE Location SET Company_ID = ',
Company_ID, ' WHERE LOWER(Location_Name) LIKE ',
LOWER(REPLACE(Company_Name), ' ', '%'), ' AND Company_ID IS NULL;')
FROM Company;
Затем просто выполните операторы, которые это производит. Это могло сделать большую гранжевую работу для Вас.