小弟初学Eclipse下的android编程,研究教材里的代码总是报空指针,请大家指教下问题在哪里Main.java,就是监听而已,但是点击ratingbar控件就会报空指针package mobile.android.ch05.ratingbar;import android.app.Activity;
import android.os.Bundle;
import android.widget.RatingBar;
import android.widget.TextView;
import android.widget.RatingBar.OnRatingBarChangeListener;public class Main extends Activity implements OnRatingBarChangeListener
{
private RatingBar smallRatingBar;
private RatingBar indicatorRatingBar;
private TextView textView; @Override
public void onRatingChanged(RatingBar ratingBar, float rating,
boolean fromUser)
{ } @Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
RatingBar ratingBar1 = (RatingBar) findViewById(R.id.ratingbar1);
RatingBar ratingBar2 = (RatingBar) findViewById(R.id.ratingbar2);
textView = (TextView) findViewById(R.id.textview); ratingBar1.setOnRatingBarChangeListener(this);
ratingBar2.setOnRatingBarChangeListener(this);

smallRatingBar = (RatingBar) findViewById(R.id.smallRatingbar);
indicatorRatingBar = (RatingBar) findViewById(R.id.indicatorRatingbar);
}
}下面是main.xml布局文件也发上来,就是几个ratingbar
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="3颗星,步长是0.5" />
<RatingBar android:id="@+id/ratingbar1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:numStars="3" 
android:rating="2" />
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="5颗星,步长是0.1" />
<RatingBar android:id="@+id/ratingbar2" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:numStars="5"
android:stepSize="0.1" />
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_marginTop="10dip"> <TextView android:id="@+id/textview" android:layout_width="wrap_content"
android:layout_height="wrap_content"  />
<RatingBar android:id="@+id/smallRatingbar" style="?android:attr/ratingBarStyleSmall"
android:layout_marginLeft="5dip" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<RatingBar android:id="@+id/indicatorRatingbar" style="?android:attr/ratingBarStyleIndicator"
android:layout_marginLeft="5dip" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:stepSize="0.1" /></LinearLayout>错误信息
12-26 01:10:52.039: W/dalvikvm(799): threadid=1: thread exiting with uncaught exception (group=0x409951f8)
12-26 01:10:52.089: E/AndroidRuntime(799): FATAL EXCEPTION: main
12-26 01:10:52.089: E/AndroidRuntime(799): java.lang.NullPointerException
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.widget.AbsSeekBar.onTouchEvent(AbsSeekBar.java:338)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.View.dispatchTouchEvent(View.java:5462)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1680)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1680)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1680)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:1953)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1680)
12-26 01:10:52.089: E/AndroidRuntime(799):  at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1882)
12-26 01:10:52.089: E/AndroidRuntime(799):  at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1361)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.app.Activity.dispatchTouchEvent(Activity.java:2364)
12-26 01:10:52.089: E/AndroidRuntime(799):  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1830)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.View.dispatchPointerEvent(View.java:5638)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:2827)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2406)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.os.Looper.loop(Looper.java:137)
12-26 01:10:52.089: E/AndroidRuntime(799):  at android.app.ActivityThread.main(ActivityThread.java:4340)
12-26 01:10:52.089: E/AndroidRuntime(799):  at java.lang.reflect.Method.invokeNative(Native Method)
12-26 01:10:52.089: E/AndroidRuntime(799):  at java.lang.reflect.Method.invoke(Method.java:511)
12-26 01:10:52.089: E/AndroidRuntime(799):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
12-26 01:10:52.089: E/AndroidRuntime(799):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
12-26 01:10:52.089: E/AndroidRuntime(799):  at dalvik.system.NativeStart.main(Native Method)

解决方案 »

  1.   

    在ontouch中报错,在ontouch中重新find你点的那个view
      

  2.   


    小弟初学java和eclipse还请说明白下,我知道是ontouch中出错,但是您说重新find 这个view是什么意思??
      

  3.   

    smallRatingBar = (RatingBar) findViewById(R.id.smallRatingbar);
    这句再写一遍。 在ontouch中
      

  4.   

    感觉没什么错啊,遇到这种问题就是clean一下
      

  5.   

    我上次在监视一个button中也遇见这个问题了。。后来我在
     findViewById(R.id.button1);之前加上this.findViewById(R.id.button1)就不提示空指针了不过上次出问题我只要注销监听那句话就OK,但是这次注销监听也不好使了
      

  6.   

    是要监听我按的ratingBar的OnTouch事件吗??
    我加了监听的接口
    public class Main extends Activity implements OnTouchListener,  OnRatingBarChangeListener
    在这两句话后面
    ratingBar1.setOnRatingBarChangeListener(this);
    ratingBar2.setOnRatingBarChangeListener(this);
    我想用这句话监听
    ratingBar1.setOnTouchListener(this);
    ratingBar2.setOnTouchListener(this);
    然后调用
    @Override
    public boolean onTouch()
    {
    RatingBar ratingBar1 = (RatingBar) this.findViewById(R.id.ratingbar1);
    RatingBar ratingBar2 = (RatingBar) this.findViewById(R.id.ratingbar2);
    return true ;
    }
    但是他提示出错。。
    The method onTouch() of type Main must override or implement a supertype method /ch05_ratingbar/src/mobile/android/ch05/ratingbar
    The type Main must implement the inherited abstract method View.OnTouchListener.onTouch(View, MotionEvent)
      

  7.   

    你的onTouch写错了。    public boolean onTouch(View v, MotionEvent event) {