2015-02-10 61 views
1

嘿,我目前正在自己​​的方式进入Android的自定义视图,但我现在遇到了设置侦听器的问题。如果我从自定义视图类中调用监听器,一切正常,但我想从我的MainActivity中设置监听器,这是我现在遇到问题的地方。每次,我从MainActivity调用Listener,我只是得到一个空指针,无论我传递给该方法。这里自定义类Android:跨类开始侦听器

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

它完美地返回值的代码。现在,当我想在我的MainActivity做这样的事情

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

我已经尝试过通过各种参数与各种演员,但似乎没有任何帮助。

在此先感谢,亚历克斯

+2

你检查RV不为空,有在你的xml布局文件中设置了这个id R.id.jogView? – 2015-02-10 13:58:01

+0

你是对的,它实际上是空的,但现在我想知道为什么它没有得到任何值的findViewById是所有其他(按钮等)的工作。还有什么我需要考虑的吗? – user2875404 2015-02-10 14:10:09

回答

0

感谢KevDev,我发现这个问题。我叫

super(context); 

但我shold've在我的建筑工叫super(context,attrs);,因为它是public RoundKnobButton(Context context, AttributeSet attrs)否则它当然不能返回ID

感谢