请教ratingbar控件,出现空指针
小弟初学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); }}<?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.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)
[解决办法]
smallRatingBar = (RatingBar) findViewById(R.id.smallRatingbar);
这句再写一遍。 在ontouch中
[解决办法]
你的onTouch写错了。 public boolean onTouch(View v, MotionEvent event) {