在Android中实现Touch Listener时出现NULL指针异常

时间:2013-03-04 18:26:40

标签: android

我正在尝试通过拖动和触摸侦听器创建简单的应用程序。但是当我通过内部类将TouchListener设置为TextView控件时,获取NullPointerException:这是代码。

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

}
}

1 个答案:

答案 0 :(得分: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的视图。但是,您在调用findViewById()之前尝试使用setContentView(),这会导致option1获得空值,因为当前没有充气布局。重新排序语句应该解决这个问题