최근에 설정보기에서 사용자 입력의 X 및 Y 좌표를 표시하는 간단한 XY 패드 인 안드로이드 응용 프로그램 용 프로그램을 작업하고 있습니다. 그것이 작동하는 방식은 두 개의 TextViews (하나는 X 값을 표시하고 하나는 Y 값을 표시하는)가있는 응용 프로그램 용 XML 레이아웃이며 XY- 패드가있는 뷰도 있습니다. 내가 계속 실행중인 문제는 XML의 연결된 클래스 파일에 X 및 Y 좌표를 보내어 TextViews의 텍스트를 설정하려고하면 오류가 발생합니다 (NullPointerException 오류). 누구든지 코드에 의해 잘못 될 수있는 것을 알고 있습니까?XY-Pad X 및 Y NPE 오류 가져 오기 (해결 된)
public class drawing extends View{
private Paint paint = new Paint();
private Path path = new Path();
private float eventX = 0;
private float eventY = 0;
public drawing(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStrokeWidth(20f);
paint.setColor(Color.YELLOW);
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
}
@SuppressLint("DrawAllocation")
@Override
protected void onDraw(Canvas canvas) {
canvas.drawPath(path, paint);
try{
Start itUp = new Start();
itUp.setXY(eventX, eventY); //The call to the method that is being problematic
}
catch(Exception e1){
Toast.makeText(drawing.this.getContext(), "We have an error! "+ e1, Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
try{
eventX = event.getX();
eventY = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
path.moveTo(eventX, eventY);
return true;
case MotionEvent.ACTION_MOVE:
path.reset();
path.addCircle(eventX, eventY, 20, Path.Direction.CW);
break;
case MotionEvent.ACTION_UP:
path.reset();
break;
default:
path.reset();
return false;
}
// Schedules a repaint.
invalidate();
return true;
}
catch(Exception e1){
return true;
}
}
}
:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".Start" >
<TextView
android:id="@+id/theX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="X:"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/theY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/button1"
android:layout_marginBottom="30dp"
android:layout_toLeftOf="@+id/linearLayout1"
android:text="Y: "
android:textAppearance="?android:attr/textAppearanceMedium" />
<view class="com.example.robotcontroller.drawing"
android:id="@+id/XYpad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/button1" />
여기
가이 XML 데이터의보기의 내부에 간다 인 '그리기'클래스입니다 : 여기
는 XML 데이터입니다 보기가 잘 표시되고 손가락을 추적 할 수 있으며 문제없이 다른 클래스의 다른 메소드를 호출 할 수 있습니다. 문제는 XML에서 두 개의 TextView를 조작하는 TextView 객체를 만들려고 할 때 프로그램이 충돌하고 'NullPointerException'이 발생합니다. 항목이 존재하고 텍스트가 포함 된 이유를 이해하지 못합니다. 이유는 무엇입니까? 그것이 존재하지 않겠는가? 여기public class Start extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.start, menu);
return true;
}
public void setXY(float x, float y){ //The method where the TextViews are created, and pointing to null objects....
TextView tv1 = (TextView) findViewById(R.id.theX);
TextView tv2 = (TextView) findViewById(R.id.theY);
tv1.setText("X value: "+x);
tv2.setText("Y value: "+y);
}
}
가 NPE 스택 트레이스 (...이 도움이되기를 바랍니다)입니다 :
다음
이 문제가되고있는 'setXY'방법을 포함 무엇인가 '시작'활동
at android.widget.Toast.show(Toast.java:113)
at com.example.robotcontroller.drawing.onDraw(drawing.java:44)
at android.view.View.draw(View.java:14433)
at android.view.View.draw(View.java:14318)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14316)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14316)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14436)
at android.view.View.draw(View.java:14318)
at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
at android.view.View.draw(View.java:14436)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.render(RenderSessionImpl.java:584)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:338)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:334)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.RenderService.createRenderSession(RenderService.java:451)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.renderWithBridge(GraphicalEditorPart.java:1545)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.recomputeLayout(GraphicalEditorPart.java:1302)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.GraphicalEditorPart.activated(GraphicalEditorPart.java:1059)
at com.android.ide.eclipse.adt.internal.editors.layout.LayoutEditorDelegate.delegateActivated(LayoutEditorDelegate.java:743)
at com.android.ide.eclipse.adt.internal.editors.common.CommonXmlEditor.activated(CommonXmlEditor.java:416)
at com.android.ide.eclipse.adt.internal.editors.layout.gle2.LayoutWindowCoordinator.partActivated(LayoutWindowCoordinator.java:379)
at org.eclipse.ui.internal.PartService$6.run(PartService.java:131)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.PartService.partActivated(PartService.java:129)
at org.eclipse.ui.internal.WorkbenchPage$12.run(WorkbenchPage.java:4462)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.WorkbenchPage.firePartActivated(WorkbenchPage.java:4460)
at org.eclipse.ui.internal.WorkbenchPage.access$16(WorkbenchPage.java:4440)
at org.eclipse.ui.internal.WorkbenchPage$E4PartListener.partActivated(WorkbenchPage.java:173)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl$2.run(PartServiceImpl.java:193)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.firePartActivated(PartServiceImpl.java:191)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:596)
at org.eclipse.e4.ui.internal.workbench.PartServiceImpl.activate(PartServiceImpl.java:549)
at org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer.activate(AbstractPartRenderer.java:105)
at org.eclipse.e4.ui.workbench.renderers.swt.StackRenderer$ActivationJob.run(StackRenderer.java:214)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4144)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1053)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:942)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:86)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
at org.eclipse.equinox.launcher.Main.run(Main.java:1438)
at org.eclipse.equinox.launcher.Main.main(Main.java:1414)
NPE를 게시 할 수 있습니까? – Thierry
위의 예외 스택 추적을 넣습니다. 원하는 경우 ... – Greg