Android. Почему изображение в упражнении 1 заканчивается в упражнении 2? (Zxing CaptureActivity - это действие 2) - PullRequest
2 голосов
/ 23 ноября 2011

Все шло хорошо, разрабатывая новое приложение, пока я не начал настраивать интерфейс.

Я внедрил сканер штрих-кода zxing в свой проект для удобства пользователя и моего пользовательского управления.

только изменения, которые я делаю в CaptureActivity, касаются результатов сканирования.Я также просмотрел файл AndroidManifest.xml и убрал фильтры намерений, чтобы приложение не предлагалось для запросов, обрабатываемых приложением сканера штрих-кода.(Неправильно, когда операционная система Android предлагает мою активность наряду с заслуженной «удивительностью» сканера штрих-кодов Xzing)

Я добавил два ImageViews в свою активность индекса, и один из них запускает сканер.Интересно то, что изображение, отображаемое в сканере, не является ссылкой 1 на сканер.

В итоге, 2 изображения для навигации, второе изображение ведет к сканеру, первое изображение блокирует мой взгляд на сканер.

enter image description here

Сначала я изменил название ресурса (был add_card.png на add_tag.png), и у меня был чистый вид сканера, но с тех пор изображениевернулась.

Вот код активности индекса

//in on create
ImageView view = (ImageView) findViewById(R.id.addTagButton);
        view.setOnClickListener(addCardListener);

view = (ImageView) findViewById(R.id.scanButton);
        view.setOnClickListener(scanListener);

// end of in on create

private OnClickListener addCardListener = new OnClickListener() {
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), AddCard.class));
    }
};
private OnClickListener scanListener = new OnClickListener() {
    public void onClick(View v) {
        startActivity(new Intent(getApplicationContext(), CaptureActivity.class));
    }
};

Некоторый XML-файл, который загружает файл индекса

<ImageView  android:src="@drawable/add_tag"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="6dip"
        android:layout_marginLeft="12dip"
        android:id="@+id/addTagButton"
        android:layout_gravity="bottom|left"
></ImageView>

И единственные изменения, которые я сделал вCaptureActivity находятся в коде, который запускается после считывания штрих-кода.

UPDATE

Я попытался установить для средства запуска CaptureActivity, и изображение не отображается, как на скриншоте.Это был совет Павана, и я думаю, мы оба надеялись, что проблема будет воспроизведена, чтобы я начал искать в 1 месте, которое я уже вычеркнул из своего списка.(Вот как я нахожу свои ключи, когда они утеряны)

ОБНОВЛЕНИЕ 2

Я попытался изменить рассматриваемый ImageView (add_tag) на кнопку - без изменений Если я удалю ImageViewвопрос из xml, не применимое решение, проблема исчезает.Это что-то, когда этот png уже загружен в память.У меня загружено больше изображений, чем описано выше в моей активности Index, но изображение add_tag ​​постоянно отображается на камере.Затем, если я сохраню ресурс изображения в res/drawable, но никогда не загружу его в активность Index, он не будет отображаться поверх камеры.

По каким причинам изображение из действия 1 заканчиваетсяв деятельности2?Как я могу очистить индекс активности так, как будто XML никогда не загружал изображение в onStop?

ОБНОВЛЕНИЕ 3 У меня больше нет проблем, и я могу двигаться дальше.Я все еще не уверен, имеет ли это отношение к камере в целом или Zxing.Принимая во внимание совет Шона о том, что это связано с Java.R, я попытался удалить нарисованный объект, который вызывал проблему, переименовать, вставить в проект.Это не совсем сработало.
Исправлено, когда я добавил копию моего Drawable в проект.
Теперь папка Drawable начинается с add_card add_tag ​​... и т.д.

Если я установил свой ImageViewПри добавлении add_card в действие Index возникает проблема. Если я установлю свой ImageView на add_tag, никаких проблем не возникнет.-> Это наводит меня на мысль, что первый (в алфавитном порядке) ресурс для рисования будет конфликтовать со сканером. Я собираюсь сохранить изображение-заполнитель, которое я никогда не загружу, как верхнюю часть папки для рисования и скрестить пальцы.

Есть пища для размышлений.(Я все еще открыт для того, чтобы кто-то объяснял мне, почему это происходит)

PS Не стесняйтесь редактировать мой вопрос, если вы чувствуете, что мое путешествие к решению немного раздуто.

Ответы [ 2 ]

2 голосов
/ 09 февраля 2012

Ошибка проявляется только в том случае, если CaptureActivity xzing «вызывается» из активности в ландшафтном режиме.Если «вызывающая» активность находится в состоянии Portait, ошибка не возникает.Последующие вызовы CaptureActivity в порядке из ландшафтного режима.Я не могу найти точную причину, но эффект в том, что Представления в CaptureActivity «автоматически устанавливают» для рисования для фона и, таким образом, препятствуют обзору камеры.К счастью, есть два возможных обходных пути: 1. Как обнаружил себя Модик: просто поместите некоторый файл изображения в res / drawable /, который сначала в алфавитном порядке, например aaa.png.2. Удалите фоновые рисунки во время выполнения следующим образом:

((TextView) findViewById(R.id.status_view)).setBackgroundDrawable(null);
((ViewfinderView) findViewById(R.id.viewfinder_view)).setBackgroundDrawable(null);

Поместите код в onCreate() чуть ниже setContentView(R.layout.capture);.

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

1 голос
/ 23 ноября 2011

Наиболее вероятным объяснением является то, что ваш сгенерированный файл R.java не синхронизирован с вашим скомпилированным кодом.

Возможно, ваш байт-код ссылается на постоянные значения, которые с тех пор изменились, и теперь указывают на неправильные изображения.Просто очистите и перекомпилируйте, если так.Но я не думаю, что это так.

Я думаю, у вас есть идентификаторы ресурсов из нашего и вашего кода, и он не использует тот, который вы считаетеЭто является симптомом копирования и вставки нашего проекта.Мы настоятельно не рекомендуем начинать с клона;их уже слишком много.Было бы лучше (и, вероятно, менее подвержено ошибкам) ​​написать свое собственное приложение для сканера и повторно использовать кусочки по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...