2013-03-04 76 views
1

我正在尝试通过Drag和Touch Listener创建简单的应用程序。但是当我通过内部类将TouchListener设置为TextView控件时,获取NullPointerException:这里是代码。NULL在Android中实现Touch Listener时出现指针异常

public class MainActivity extends Activity 
{ 

private TextView option1, choice1; 

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    option1 = (TextView)findViewById(R.id.option_1);   
    setContentView(R.layout.activity_main); 
     option1.setOnTouchListener(new ChoiceTouchListener()); [NULLPOINTER] 
} 

private final class ChoiceTouchListener implements OnTouchListener 
{ 

    @Override 
    public boolean onTouch(View arg0, MotionEvent arg1) { 
     // TODO Auto-generated method stub 

     if(arg1.getAction() == MotionEvent.ACTION_DOWN) 
     { 

ClipData clipdata = ClipData.newPlainText("",""); 
DragShadowBuilder shadowbuilder = new DragShadowBuilder(arg0); 
arg0.startDrag(clipdata, shadowbuilder, arg0, 0); 
return true; 
     } 
     else 
     { 
     return false; 
     } 
    } 

} 
} 

回答

6

变化:

protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    option1 = (TextView)findViewById(R.id.option_1);   
    setContentView(R.layout.activity_main); 
    option1.setOnTouchListener(new ChoiceTouchListener()); 
} 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    option1 = (TextView)findViewById(R.id.option_1); 
    option1.setOnTouchListener(new ChoiceTouchListener()); 
} 

findViewById()查找具有在当前充气布局所提供的ID的视图。但是,在拨打setContentView()之前,您尝试使用findViewById(),这会导致option1获得空值,因为当前没有充气布局。重新排列报表应该解决这个问题

相关问题