2011-11-18 61 views
2

我刚刚创建了一个应用程序,用于使用TouchEvent方法在屏幕上书写文本。它工作正常。看,这就是代码如何清除布局上的内容?

public TouchEventView(Context context, AttributeSet attrs) { 
    super(context, attrs); 

    paint.setAntiAlias(true); 
    paint.setColor(Color.WHITE); 
    paint.setStyle(Paint.Style.STROKE); 
    paint.setStrokeJoin(Paint.Join.ROUND); 
    paint.setStrokeWidth(5f); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    canvas.drawPath(path, paint); 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    float x = event.getX(); 
    float y = event.getY(); 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     path.moveTo(x, y); 
     return true; 
    case MotionEvent.ACTION_MOVE: 
     path.lineTo(x, y); 
     break; 
    default: 
     return false; 
    } 
    invalidate(); 
    return true; 

后,我写了明确的内容代码布局: -

LinearLayout li = (LinearLayout)findViewById(R.id.linear); 
    li.clearAnimation(); 

我logcat的

11-18 16:10:18.681: I/System.out(22859): This is a log message 
11-18 16:10:18.681: E/Mein Tag(22859): Hello 
11-18 16:10:20.581: W/KeyCharacterMap(22859): No keyboard for id 0 
11-18 16:10:20.581: W/KeyCharacterMap(22859): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
11-18 16:10:21.721: D/AndroidRuntime(22859): Shutting down VM 
11-18 16:10:21.721: W/dalvikvm(22859): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
11-18 16:10:21.731: E/AndroidRuntime(22859): FATAL EXCEPTION: main 
11-18 16:10:21.731: E/AndroidRuntime(22859): java.lang.NullPointerException 
11-18 16:10:21.731: E/AndroidRuntime(22859): at de.vogella.android.touch.WriteOnScreenActivity.clear(WriteOnScreenActivity.java:47) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at de.vogella.android.touch.WriteOnScreenActivity.onOptionsItemSelected(WriteOnScreenActivity.java:38) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.app.Activity.onMenuItemSelected(Activity.java:2195) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:730) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.view.menu.IconMenuView.invokeItem(IconMenuView.java:532) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.view.menu.IconMenuItemView.performClick(IconMenuItemView.java:122) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.view.View$PerformClick.run(View.java:8816) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.os.Handler.handleCallback(Handler.java:587) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.os.Handler.dispatchMessage(Handler.java:92) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.os.Looper.loop(Looper.java:123) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at android.app.ActivityThread.main(ActivityThread.java:4627) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at java.lang.reflect.Method.invokeNative(Native Method) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at java.lang.reflect.Method.invoke(Method.java:521) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
11-18 16:10:21.731: E/AndroidRuntime(22859): at dalvik.system.NativeStart.main(Native Method) 
11-18 16:22:15.801: I/System.out(23179): This is a log message 
11-18 16:22:15.811: E/Mein Tag(23179): Hello 

当我按下清除按钮,我得到了这个应用程序的Nullpointer异常。什么做错了?

任何人指导我。

+0

第一步是看在你的logcat并找到NullPointerException异常,并在该行 –

+0

里是空在这里所以,请选中该行的LinearLayout李=看(的LinearLayout)findViewById(R.id.linear);正确 –

回答

0

看一看这个link。它已经在apidemos示例项目中提供。 希望这可以帮助你..

4
/*this is for clear viewgroup here main is viewgroup   */ 
if (null != main && main.getChildCount() > 0) {     
    try { 
     main.removeViews (0, main.getChildCount()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
1

这应该工作

LinearLayout layout; // also works with other Layouts or ViewGroups 
... 
layout.removeAllViews(); 
// layout is cleared 
4
LinearLayout lyt = (LinearLayout) findViewById(R.id.linearlayout); 
lyt.removeAllViews();