Не вижу операторов logcat, как ожидалось

1

У меня есть следующий класс:

public class SplashActivity extends Activity implements OnKeyListener, OnTouchListener {
    private LinearLayout mLinearLayout;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        mLinearLayout = new LinearLayout(this);
        mLinearLayout.addView(getBgImg());
        mLinearLayout.setOnKeyListener(this);
        mLinearLayout.setOnTouchListener(this);
        mLinearLayout.setFocusable(true);
        setContentView(mLinearLayout);
    }

    private ImageView getBgImg() {
        ImageView imgV = new ImageView(this);
        imgV.setImageResource(R.drawable.splash);
        imgV.setAdjustViewBounds(true);
        imgV.setLayoutParams(new Gallery.LayoutParams(
                LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
        return imgV;
    }

    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        System.out.println("test2");
        return true;
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
        System.out.println("test1");
        return true;
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        switch (keyCode) {
        case KeyEvent.KEYCODE_S:
            // mDoSat = !mDoSat;
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

К сожалению, несмотря на нажатие кнопок на эмуляторе и нажатие на экране, я не получаю "test1" или "test2", напечатанный в LogCat.

  • 0
    Вы должны пометить любой из них как ответ .. или сказать, почему они не помогли!
Теги:
android-emulator
android-logcat

6 ответов

2

Вы должны использовать Log.d("TAG", "test1"), d для отладки, чтобы вы могли также использовать другие ex. Log.i, это будет записано в вашем LogCat.

Подробнее о Logcat см. документацию по Android.

0

Переопределяет: onTouchEvent (...) в действии public boolean onTouchEvent (событие MotionEvent) Поскольку: Уровень API 1 Вызывается, когда событие с сенсорным экраном не обрабатывается ни одним из видов под ним. Это наиболее полезно для обработки событий касания, которые происходят за пределами границ окна, где нет представления для его получения.

Как вы можете видеть, onTouchEvent вызывается, когда событие сенсорного экрана не обрабатывается ни одним из видов под ним.

Итак, я предлагаю использовать onClickListener и возвращать false в onTouchEvent.

0

Я не верю, что срабатывание сенсорных событий срабатывает при нажатии дочернего элемента. Мне нужно добавить слушателей в представление getBgImg().

0

Кроме того, logcat ошибочен как ад и не позволяет очень хорошую фильтрацию. Мне удалось запустить log4j на Android, он работает с бензопилой. Это позволяет вам регистрировать длинные журналы и не иметь логарифмического сбоя, когда вам это нужно.

Поддержка log4j в Android

  • 0
    Вы должны попробовать последний снимок разработчика Chainsaw - тонна новых функций в предстоящем выпуске - tarball и DMG, доступные здесь: people.apache.org/~sdeboy
  • 0
    Это могло быть изменение вашего предыдущего ответа, нет необходимости добавлять второй.
0

Иногда я получаю случай, когда logcat ничего не показывает. Однако, если я запускаю приложение при отладке один раз, он обычно исправляет эту проблему.

0

Использовать GestureDetector в методе View.onTouchEvent(MotionEvent ev)

что, вам нужен пример кода??? прочитайте документы, в своем представлении используйте GestureDetector для перевода MotionEvent, полученного методом onTouchEvent... Sheesh :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню