I have created extension of the SeekBar class:
package com.simplemathgame;
import android.content.Context;
import android.widget.SeekBar;
import android.widget.TextView;
public class SeekBarPlus extends SeekBar {
private TextView numberOfDrills;
public SeekBarPlus(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
numberOfDrills.setText(progress);
}
public void setTextView(TextView textView){
numberOfDrills = textView;
}
}
and here is the xml layout file:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:background="#000044">
<TableRow
android:layout_marginTop="10dp"
android:gravity="center_vertical" >
<TextView
android:textColor="#FFFFFFFF"
android:textSize="16sp"
android:textStyle="bold"
android:text="Addition Drills:"/>
</TableRow>
<TableRow
android:layout_marginTop="5dp"
android:gravity="center_vertical" >
<com.simplemathgame.SeekBarPlus
android:id="@+id/add_seek_bar"
android:layout_width="20dp"
android:max="10"
android:layout_weight="0.8"/>
<TextView
android:id="@+id/add_drills_number"
android:textColor="#FFFFFFFF"
android:textSize="16sp"
android:textStyle="bold"
android:layout_weight="0.2"
android:gravity="center_horizontal"
android:text="0"/>
</TableRow>
</TableLayout>
Here is the logCat:
12-19 19:52:48.457: D/dalvikvm(335): GC_EXTERNAL_ALLOC freed 46K, 53% free 2546K/5379K, external 1917K/2137K, paused 72ms
12-19 19:52:51.617: D/AndroidRuntime(335): Shutting down VM
12-19 19:52:51.617: W/dalvikvm(335): threadid=1: thread exiting with uncaught exception (group=0x40015560)
12-19 19:52:51.647: E/AndroidRuntime(335): FATAL EXCEPTION: main
12-19 19:52:51.647: E/AndroidRuntime(335): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.simplemathgame/com.simplemathgame.MainActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class com.simplemathgame.SeekBarPlus
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.os.Handler.dispatchMessage(Handler.java:99)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.os.Looper.loop(Looper.java:123)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread.main(ActivityThread.java:3683)
12-19 19:52:51.647: E/AndroidRuntime(335): at java.lang.reflect.Method.invokeNative(Native Method)
12-19 19:52:51.647: E/AndroidRuntime(335): at java.lang.reflect.Method.invoke(Method.java:507)
12-19 19:52:51.647: E/AndroidRuntime(335): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
12-19 19:52:51.647: E/AndroidRuntime(335): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
12-19 19:52:51.647: E/AndroidRuntime(335): at dalvik.system.NativeStart.main(Native Method)
12-19 19:52:51.647: E/AndroidRuntime(335): Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class com.simplemathgame.SeekBarPlus
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.createView(LayoutInflater.java:508)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.rInflate(LayoutInflater.java:626)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
12-19 19:52:51.647: E/AndroidRuntime(335): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:207)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.Activity.setContentView(Activity.java:1657)
12-19 19:52:51.647: E/AndroidRuntime(335): at com.simplemathgame.MainActivity.onCreate(MainActivity.java:16)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
12-19 19:52:51.647: E/AndroidRuntime(335): ... 11 more
12-19 19:52:51.647: E/AndroidRuntime(335): Caused by: java.lang.NoSuchMethodException: SeekBarPlus(Context,AttributeSet)
12-19 19:52:51.647: E/AndroidRuntime(335): at java.lang.Class.getMatchingConstructor(Class.java:643)
12-19 19:52:51.647: E/AndroidRuntime(335): at java.lang.Class.getConstructor(Class.java:472)
12-19 19:52:51.647: E/AndroidRuntime(335): at android.view.LayoutInflater.createView(LayoutInflater.java:480)
12-19 19:52:51.647: E/AndroidRuntime(335): ... 22 more
I see there is a problem with the extended SeekBarPlus class, But don’t really know why. Thanks!
You haven’t specified full set of constructors in your custom view class. In your particular case,
SeekBarPlus(Context,AttributeSet)constructor is missing.Custom view class needs to have these 3 constructors:
If you don’t need them, just call
super()as shown above.