Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:跨类启动侦听器_Java_Android - Fatal编程技术网

Java Android:跨类启动侦听器

Java Android:跨类启动侦听器,java,android,Java,Android,嘿,我目前正在安卓系统上自定义视图,但我现在在设置侦听器时遇到了一个问题。如果我从自定义视图类中调用侦听器,一切都正常,但是我想从MainActivity设置侦听器,这正是我现在遇到问题的地方。每次,我从MainActivity调用侦听器时,我都会得到一个空指针,不管我传递给该方法的是什么。这里是自定义类的代码 public class RoundKnobButton extends RelativeLayout implements OnGestureListener { public in

嘿,我目前正在安卓系统上自定义视图,但我现在在设置侦听器时遇到了一个问题。如果我从自定义视图类中调用侦听器,一切都正常,但是我想从MainActivity设置侦听器,这正是我现在遇到问题的地方。每次,我从MainActivity调用侦听器时,我都会得到一个空指针,不管我传递给该方法的是什么。这里是自定义类的代码

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;
} 
如果我从这个类中调用侦听器

     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); 
        }
    }); 
在我的主要活动中,我得到

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(新的RoundKnobButton.RoundKnobButtonListener()

我已经尝试过通过各种类型的强制转换传递各种参数,但在这里似乎没有任何帮助


提前谢谢,Alex

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

super(context);
但是我应该在构造函数中调用
super(context,attrs);
,因为它是
public RoundKnobButton(context-context,AttributeSet-attrs)
,否则它当然不能返回ID


谢谢

您是否检查过rv不为空,并且在您的xml布局文件中已使用此id R.id.jogView设置?您是对的,它实际上为空,但现在我想知道为什么它没有得到任何值,因为findViewById是所有其他(按钮等)都可以工作的。还有什么需要考虑的吗?