Спасибо за столь быстрый отклик! Итак, я хотел повторить предложенный в уроке пример, с одним лишь исключением - обрабатывать касание нарисованного мною слоя в
activity_main.xml. Для этого на по умолчанию созданный RelativeLayout я налепил элемент
TextView, чтобы он выводил мне координаты точки. Я в
main файле создаю две локальных переменных
RelativeLayout и
TextView, к которым подвязываю объекты из моего интерфейса по id. И извините, везде где в начале стоит "//" код не используется ( это мои предыдущие попытки ). Content прогружаю из файла
activity_main.
Лог файл:
Код: Выделить всё
10-13 19:56:57.012: E/InputEventReceiver(2093): Exception dispatching input event.
10-13 19:56:57.100: E/MessageQueue-JNI(2093): Exception in MessageQueue callback: handleReceiveCallback
10-13 19:56:57.320: E/MessageQueue-JNI(2093): java.lang.NullPointerException
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.example.trytostart.MainActivity.onTouch(MainActivity.java:52)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.View.dispatchTouchEvent(View.java:7379)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2203)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1938)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.View.dispatchPointerEvent(View.java:7564)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.os.MessageQueue.nativePollOnce(Native Method)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.os.MessageQueue.next(MessageQueue.java:132)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.os.Looper.loop(Looper.java:124)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at java.lang.reflect.Method.invokeNative(Native Method)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at java.lang.reflect.Method.invoke(Method.java:525)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-13 19:56:57.320: E/MessageQueue-JNI(2093): at dalvik.system.NativeStart.main(Native Method)
10-13 19:56:57.401: D/AndroidRuntime(2093): Shutting down VM
10-13 19:56:57.441: W/dalvikvm(2093): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
10-13 19:56:57.630: E/AndroidRuntime(2093): FATAL EXCEPTION: main
10-13 19:56:57.630: E/AndroidRuntime(2093): java.lang.NullPointerException
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.example.trytostart.MainActivity.onTouch(MainActivity.java:52)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.View.dispatchTouchEvent(View.java:7379)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2203)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1938)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1910)
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1966)
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1418)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.app.Activity.dispatchTouchEvent(Activity.java:2424)
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1914)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.View.dispatchPointerEvent(View.java:7564)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3883)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3778)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3483)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3540)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3429)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3398)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3406)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3379)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5419)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5399)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5370)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5493)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:182)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.os.MessageQueue.nativePollOnce(Native Method)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.os.MessageQueue.next(MessageQueue.java:132)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.os.Looper.loop(Looper.java:124)
10-13 19:56:57.630: E/AndroidRuntime(2093): at android.app.ActivityThread.main(ActivityThread.java:5103)
10-13 19:56:57.630: E/AndroidRuntime(2093): at java.lang.reflect.Method.invokeNative(Native Method)
10-13 19:56:57.630: E/AndroidRuntime(2093): at java.lang.reflect.Method.invoke(Method.java:525)
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-13 19:56:57.630: E/AndroidRuntime(2093): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-13 19:56:57.630: E/AndroidRuntime(2093): at dalvik.system.NativeStart.main(Native Method)
10-13 19:58:49.770: I/Process(2093): Sending signal. PID: 2093 SIG: 9
В процессе отладки обнаружил, что проблему вызывал конкретный TextView, то есть он не хочет выводить на него ничего, используя тостер реализовалось все нормально. Однако вопрос остался открытым, что если я хочу передать текст на
frame, как мне лучше сделать это, какой объект использовать. Подскажите пожалуйста, уважаемые форумчане
код последней рабочей редакции ( с тостером )
Код: Выделить всё
package com.example.trytostart;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View.OnTouchListener;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.view.View;
public class MainActivity extends Activity implements OnTouchListener{
TextView tv;
float x,y;
String sDown,sMove,sUp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout viv = (RelativeLayout) findViewById( R.id.myView);
viv.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent Event){
x = Event.getX();
y = Event.getY();
switch (Event.getAction())
{
case MotionEvent.ACTION_DOWN:
sDown = "Down" + x + "," + y;
sMove = " "; sUp = "";
break;
case MotionEvent.ACTION_MOVE:
sMove = "Move" + x + "," + y;
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
sMove = "";
sUp = "Up" + x + "," + y;
break;
}
Context context = getApplicationContext();
Toast toast = Toast.makeText(context, sDown + "\n" + sMove + "\n" + sUp, Toast.LENGTH_SHORT);
toast.show();
return false;
}
}