Не вижу операторов logcat, как ожидалось - PullRequest
1 голос
/ 30 марта 2011

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

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);
    }
}

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

Ответы [ 6 ]

2 голосов
/ 30 марта 2011

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

См. документацию Android для получения дополнительной информации о Logcat.

0 голосов
/ 03 мая 2011

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

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

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

0 голосов
/ 30 марта 2011

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

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

0 голосов
/ 30 марта 2011

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

0 голосов
/ 30 марта 2011

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

0 голосов
/ 30 марта 2011

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

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

...