I have this seekbar and this TextView in which I want to show the actual progress of the seekbar. The actual XML for the textview:
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seekBar1"
android:layout_below="@+id/dimension_text"/>
<TextView
android:layout_width="50dp"
android:layout_height="50dp"
android:text="@string/num_dimension" //where num_dimension is a number
android:id="@+id/textViewProgress"/>
And the actual Java:
public class MainActivity extends ActionBarActivity {
int p=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final TextView t1=(TextView) findViewById(R.id.test);
final SeekBar sk=(SeekBar) findViewById(R.id.seekBar1);
final TextView textProgress = (TextView)findViewById(R.id.textViewProgress);
sk.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
if(p<12)
{
p=12;
sk.setProgress(p);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) {
// TODO Auto-generated method stub
p=progress;
t1.setTextSize(p);
textProgress.setText(p); //this is the line that should do the work
}
});
Whenever I tap on the seekbar my app is force-closed. So I'm a little bit confused with this, what am I doing wrong?
This is the logcat:
05-20 17:59:04.141 29872-29872/com.myapplication2.app D/dalvikvm﹕ GC_FOR_ALLOC freed 424K, 14% free 10583K/12268K, paused 23ms, total 23ms
05-20 17:59:04.171 29872-29872/com.myapplication2.app I/Xposed﹕ [IconThemer/Mod] [nexbit.moonshine.icons] Loading replacements for package com.myapplication2.app
05-20 17:59:04.251 29872-29872/com.myapplication2.app D/dalvikvm﹕ GC_FOR_ALLOC freed 274K, 13% free 10804K/12348K, paused 19ms, total 19ms
05-20 17:59:04.312 29872-29872/com.myapplication2.app I/Adreno-EGL﹕ <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I0404c4692afb8623f95c43aeb6d5e13ed4b30ddbDate: 11/06/13
05-20 17:59:04.382 29872-29872/com.myapplication2.app D/OpenGLRenderer﹕ Enabling debug mode 0
05-20 17:59:10.548 29872-29872/com.myapplication2.app W/ResourceType﹕ No package identifier when getting value for resource number 0x00000002
05-20 17:59:10.548 29872-29872/com.myapplication2.app E/InputEventReceiver﹕ Exception dispatching input event.
05-20 17:59:10.548 29872-29872/com.myapplication2.app D/AndroidRuntime﹕ Shutting down VM
05-20 17:59:10.548 29872-29872/com.myapplication2.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x41543ba8)
05-20 17:59:10.558 29872-29872/com.myapplication2.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.myapplication2.app, PID: 29872
android.content.res.Resources$NotFoundException: String resource ID #0x2
at android.content.res.Resources.getText(Resources.java:244)
at android.content.res.XResources.getText(XResources.java:508)
at android.widget.TextView.setText(TextView.java:3888)
at com.myapplication2.app.MainActivity$2.onProgressChanged(MainActivity.java:77)
at android.widget.SeekBar.onProgressRefresh(SeekBar.java:91)
at android.widget.ProgressBar.doRefreshProgress(ProgressBar.java:655)
at android.widget.ProgressBar.refreshProgress(ProgressBar.java:667)
at android.widget.ProgressBar.setProgress(ProgressBar.java:714)
at android.widget.AbsSeekBar.trackTouchEvent(AbsSeekBar.java:451)
at android.widget.AbsSeekBar.onTouchEvent(AbsSeekBar.java:379)
at android.view.View.dispatchTouchEvent(View.java:7706)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
at android.app.Activity.dispatchTouchEvent(Activity.java:2458)
at android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.dispatchTouchEvent(ActionBarActivityDelegateICS.java:268)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
at android.view.View.dispatchPointerEvent(View.java:7886)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3954)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3833)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3525)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3582)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3449)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3418)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3426)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3399)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5602)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5582)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5553)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5682)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:185)
at android.view.InputEventReceiver.nativeConsumeBatchedInputEvents(Native Method)
at android.view.InputEventReceiver.consumeBatchedInputEvents(InputEventReceiver.java:176)
at android.view.ViewRootImpl.doConsumeBatchedInput(ViewRootImpl.java:5655)
at android.view.ViewRootImpl$ConsumeBatchedInputRunnable.run(ViewRootImpl.java:5701)
at android.view.Choreographer$Ca
Cast p
to a string.
You are inadvertently using this overload:
http://developer.android.com/reference/android/widget/TextView.html#setText(int)
public final void setText (int resid)
Which tries to retrieve a string resource with an ID equal to p
(you're passing p
as resid
), and there's no such resource, which causes the exception.
Change
textProgress.setText(p);
to
textProgress.setText(Integer.toString(p));
This will call the proper overload:
public final void setText (CharSequence text)
And your app won't crash.
Learn to use the Logcat, otherwise you're leaving yourself in the dark...
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.