Android:跨类启动监听器

时间:2015-02-10 13:53:19

标签: java android

嘿我目前正在使用自己的方式进入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

1 个答案:

答案 0 :(得分:0)

感谢KevDev,我发现了这个问题。我打电话了

super(context);

但是我在我的构造函数中调用了super(context,attrs);,因为它是public RoundKnobButton(Context context, AttributeSet attrs)否则它当然无法返回ID

由于