嘿我目前正在使用自己的方式进入Android的自定义视图,但我现在遇到设置监听器的问题。如果我从自定义视图类中调用监听器,一切正常,但我想从我的MainActivity设置监听器,这是我现在遇到问题的地方。每次,我从我的MainActivity调用Listener,我得到一个nullpointer,无论我传递给方法。这里是自定义类的代码
public class RoundKnobButton extends RelativeLayout implements OnGestureListener {
public interface RoundKnobButtonListener {
public void onStateChange(boolean newstate) ;
public void onRotate(int percentage);
}
public RoundKnobButtonListener m_listener;
public void SetListener(RoundKnobButtonListener l) {
m_listener = l;
}
如果我从这个类中调用Listener,如
SetListener(new RoundKnobButtonListener() {
public void onStateChange(boolean newstate) {
}
public void onRotate(final int percentage) {
System.out.println(percentage);
}
});
它完美地返回值。现在,当我想做像
这样的事情时rv=(RoundKnobButton) findViewById(R.id.jogView);
rv.SetListener(new RoundKnobButton.RoundKnobButtonListener() {
public void onStateChange(boolean newstate) {
}
public void onRotate(final int percentage) {
System.out.println(percentage);
}
});
在我的MainActivity中,我得到了
02-10 14:31:45.354: W/dalvikvm(19006): threadid=1: thread exiting with uncaught exception (group=0x418259a8)
02-10 14:31:45.360: E/AndroidRuntime(19006): FATAL EXCEPTION: main
02-10 14:31:45.360: E/AndroidRuntime(19006): java.lang.NullPointerException
02-10 14:31:45.360: E/AndroidRuntime(19006): at .buildUI( .java:191)
02-10 14:31:45.360: E/AndroidRuntime(19006): at .access$6( .java:125)
02-10 14:31:45.360: E/AndroidRuntime(19006): at .onPostExecute( .java:334)
第191行引用rv.SetListener(new RoundKnobButton.RoundKnobButtonListener()
我已经尝试用各种类型的转换传递所有类型的参数,但似乎没有任何帮助。
先谢谢,Alex
答案 0 :(得分:0)
感谢KevDev,我发现了这个问题。我打电话了
super(context);
但是我在我的构造函数中调用了super(context,attrs);
,因为它是public RoundKnobButton(Context context, AttributeSet attrs)
否则它当然无法返回ID
由于